diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..406ca4abdc68e88484ba4d3c6294fa9bc391cdb3
--- /dev/null
+++ b/.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/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000000000000000000000000000000000000..81322c6e412ea18515efc60d1fbc55ab28d53855
--- /dev/null
+++ b/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.applicationlevel.repository.text</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/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..d8c36916b99e924fc4b14a7d45ab3af0352ac001
--- /dev/null
+++ b/META-INF/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: edu.kit.ipd.descartes.mm.applicationlevel.repository.text
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.repository.text; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;bundle-version="2.1.0";visibility:=reexport,
+ org.eclipse.xtext.xbase;bundle-version="2.1.0";resolution:=optional;visibility:=reexport,
+ org.apache.log4j;bundle-version="1.2.15";visibility:=reexport,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;resolution:=optional,
+ edu.kit.ipd.descartes.mm,
+ org.eclipse.xtext.util,
+ org.antlr.runtime
+Import-Package: org.apache.log4j,
+ org.apache.commons.logging
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: edu.kit.ipd.descartes.mm.applicationlevel.repository.text,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parseTreeConstruction,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.text.validation,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.text.scoping,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.text.formatting
+
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..31255ed05bc1242430be9f3e44440c2e42921649
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
\ No newline at end of file
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/AbstractRepositoryDSLRuntimeModule.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/AbstractRepositoryDSLRuntimeModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..19261c2f16cf76bc50bccd62a1edf6d7982968b0
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/AbstractRepositoryDSLRuntimeModule.java
@@ -0,0 +1,142 @@
+/*
+ * generated by Xtext
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {edu.kit.ipd.descartes.mm.applicationlevel.repository.text.RepositoryDSLRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractRepositoryDSLRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("edu.kit.ipd.descartes.mm.applicationlevel.repository.text.RepositoryDSL");
+	}
+	
+	public void configureFileExtensions(Binder binder) {
+		if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("repositoryDSL");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services.RepositoryDSLGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parseTreeConstructor.ParseTreeConstructorFragment
+	public Class<? extends org.eclipse.xtext.parsetree.reconstr.IParseTreeConstructor> bindIParseTreeConstructor() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parseTreeConstruction.RepositoryDSLParsetreeConstructor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.RepositoryDSLParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.RepositoryDSLAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal.InternalRepositoryDSLLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal.InternalRepositoryDSLLexer> provideInternalRepositoryDSLLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal.InternalRepositoryDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureRuntimeLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal.InternalRepositoryDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.ecore2xtext.Ecore2XtextValueConverterServiceFragment
+	public Class<? extends org.eclipse.xtext.conversion.IValueConverterService> bindIValueConverterService() {
+		return org.eclipse.xtext.common.services.Ecore2XtextTerminalConverters.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends edu.kit.ipd.descartes.mm.applicationlevel.repository.text.validation.RepositoryDSLJavaValidator> bindRepositoryDSLJavaValidator() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.validation.RepositoryDSLJavaValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.scoping.RepositoryDSLScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.SimpleLocalScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+		binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.SimpleNamesFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return org.eclipse.xtext.naming.SimpleNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return edu.kit.ipd.descartes.mm.applicationlevel.repository.text.formatting.RepositoryDSLFormatter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.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.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+}
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.xmi b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.xmi
new file mode 100644
index 0000000000000000000000000000000000000000..0c23df9c83414d14d046e131282c0f9180e4c1bb
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.xmi
@@ -0,0 +1,3049 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xtext="http://www.eclipse.org/2008/Xtext">
+  <xtext:Grammar name="edu.kit.ipd.descartes.mm.applicationlevel.repository.text.RepositoryDSL" usedGrammars="/1">
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel">
+      <ePackage href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="servicebehavior">
+      <ePackage href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+      <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="repository">
+      <ePackage href="http://www.descartes-research.net/metamodel/repository/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="system">
+      <ePackage href="http://www.descartes-research.net/metamodel/system/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="resourceconfiguration">
+      <ePackage href="http://www.descartes-research.net/metamodel/resourceconfiguration/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="functions">
+      <ePackage href="http://www.descartes-research.net/metamodel/functions/0.1#/"/>
+    </metamodelDeclarations>
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="resourcetype">
+      <ePackage href="http://www.descartes-research.net/metamodel/resourcetype/0.1#/"/>
+    </metamodelDeclarations>
+    <rules xsi:type="xtext:ParserRule" name="Repository">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Repository"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Repository"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="datatypes"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="datatypes" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="datatypes" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.1"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="interfaces"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="interfaces" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="interfaces" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.14"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="components"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="components" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="components" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.2"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="DataType">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.16"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.17"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.18"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="RepositoryComponent">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RepositoryComponent"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Relationship">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.79"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.80"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="InfluencingParameter">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencingParameter"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.31"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.34"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="InterfaceProvidingEntity">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InterfaceProvidingEntity"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="InterfaceProvidingRequiringEntity">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InterfaceProvidingRequiringEntity"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.15"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ServiceBehaviorAbstraction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ServiceBehaviorAbstraction"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExternalCall">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ExternalCall"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.76"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="AbstractAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ComponentInternalBehavior">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ComponentInternalBehavior"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProcessingResourceType">
+      <type metamodel="/0/@metamodelDeclarations.7">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourcetype/0.1#//ProcessingResourceType"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProbabilityFunction">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityFunction"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EString">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.2"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Interface">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Interface"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Interface"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="parentInterfaces"/>
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:Assignment" feature="parentInterfaces" operator="+=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Interface"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="parentInterfaces" operator="+=">
+              <terminal xsi:type="xtext:CrossReference">
+                <type metamodel="/0/@metamodelDeclarations.3">
+                  <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Interface"/>
+                </type>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="signatures"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="signatures" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="signatures" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.21"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="RepositoryComponent_Impl">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RepositoryComponent"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="RepositoryComponent"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="relationship"/>
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.0">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+              <terminal xsi:type="xtext:CrossReference">
+                <type metamodel="/0/@metamodelDeclarations.0">
+                  <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+                </type>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="providedRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="blackBoxBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="requiredRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="coarseGrainedBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CollectionDataType">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//CollectionDataType"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CollectionDataType"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="innerType"/>
+        <elements xsi:type="xtext:Assignment" feature="innerType" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CompositeDataType">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//CompositeDataType"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CompositeDataType"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="parentTypes"/>
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:Assignment" feature="parentTypes" operator="+=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//CompositeDataType"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="parentTypes" operator="+=">
+              <terminal xsi:type="xtext:CrossReference">
+                <type metamodel="/0/@metamodelDeclarations.3">
+                  <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//CompositeDataType"/>
+                </type>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="innerDeclarations"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="innerDeclarations" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="innerDeclarations" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.19"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="PrimitiveDataType">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveDataType"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="PrimitiveDataType"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="type"/>
+        <elements xsi:type="xtext:Assignment" feature="type" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="InnerDeclaration">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InnerDeclaration"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="InnerDeclaration"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="dataType"/>
+        <elements xsi:type="xtext:Assignment" feature="dataType" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:EnumRule" name="PrimitiveTypeEnum">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EEnum" href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum/INT"/>
+          <literal value="INT"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum/STRING"/>
+          <literal value="STRING"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum/BOOL"/>
+          <literal value="BOOL"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum/DOUBLE"/>
+          <literal value="DOUBLE"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum/CHAR"/>
+          <literal value="CHAR"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum/BYTE"/>
+          <literal value="BYTE"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//PrimitiveTypeEnum/LONG"/>
+          <literal value="LONG"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Signature">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Signature"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="returnType"/>
+          <elements xsi:type="xtext:Assignment" feature="returnType" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="parameters"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="parameters" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.22"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Parameter">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Parameter"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Parameter"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="modifier"/>
+        <elements xsi:type="xtext:Assignment" feature="modifier" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.23"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="dataType"/>
+        <elements xsi:type="xtext:Assignment" feature="dataType" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:EnumRule" name="ParameterModifier">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EEnum" href="http://www.descartes-research.net/metamodel/repository/0.1#//ParameterModifier"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//ParameterModifier/NONE"/>
+          <literal value="NONE"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//ParameterModifier/IN"/>
+          <literal value="IN"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//ParameterModifier/OUT"/>
+          <literal value="OUT"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/repository/0.1#//ParameterModifier/INOUT"/>
+          <literal value="INOUT"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProvidedRole">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//ProvidedRole"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ProvidedRole"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="interface"/>
+        <elements xsi:type="xtext:Assignment" feature="interface" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Interface"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BlackBoxBehavior">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//BlackBoxBehavior"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="BlackBoxBehavior"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="describedSignature"/>
+          <elements xsi:type="xtext:Assignment" feature="describedSignature" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="describedEntity"/>
+        <elements xsi:type="xtext:Assignment" feature="describedEntity" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InterfaceProvidingEntity"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="influencingParameter"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="influencingParameter" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="influencingParameter" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="responseTimeSpecification"/>
+          <elements xsi:type="xtext:Assignment" feature="responseTimeSpecification" operator="=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.32"/>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="RequiredRole">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RequiredRole"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="RequiredRole"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="interface"/>
+        <elements xsi:type="xtext:Assignment" feature="interface" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Interface"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CoarseGrainedBehavior">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//CoarseGrainedBehavior"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CoarseGrainedBehavior"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="describedSignature"/>
+          <elements xsi:type="xtext:Assignment" feature="describedSignature" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="describedEntity"/>
+        <elements xsi:type="xtext:Assignment" feature="describedEntity" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InterfaceProvidingRequiringEntity"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="influencingParameter"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="influencingParameter" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="influencingParameter" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="externalCallFrequency"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="externalCallFrequency" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.77"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="externalCallFrequency" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.77"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="resourceDemandSpecification"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="resourceDemandSpecification" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="resourceDemandSpecification" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BasicComponent">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//BasicComponent"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="BasicComponent"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="relationship"/>
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.0">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+              <terminal xsi:type="xtext:CrossReference">
+                <type metamodel="/0/@metamodelDeclarations.0">
+                  <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+                </type>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="providedRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="blackBoxBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="requiredRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="coarseGrainedBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="passiveResources"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="passiveResources" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="passiveResources" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="fineGrainedBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="fineGrainedBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="fineGrainedBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CompositeComponent">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//CompositeComponent"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CompositeComponent"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="relationship"/>
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.0">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+              <terminal xsi:type="xtext:CrossReference">
+                <type metamodel="/0/@metamodelDeclarations.0">
+                  <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+                </type>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="providedRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="blackBoxBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="requiredRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="coarseGrainedBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="assemblyContexts"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="assemblyContexts" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="assemblyContexts" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="assemblyConnectors"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="assemblyConnectors" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="assemblyConnectors" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="providedDelegationConnectors"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="providedDelegationConnectors" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="providedDelegationConnectors" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="requiredDelegationConnectors"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="requiredDelegationConnectors" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="requiredDelegationConnectors" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="SubSystem">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//SubSystem"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="SubSystem"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="relationship"/>
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.0">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="relationship" operator="+=">
+              <terminal xsi:type="xtext:CrossReference">
+                <type metamodel="/0/@metamodelDeclarations.0">
+                  <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Relationship"/>
+                </type>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="providedRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="providedRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.24"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="blackBoxBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="blackBoxBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.25"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="requiredRoles"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="requiredRoles" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.26"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="coarseGrainedBehavior"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="coarseGrainedBehavior" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="assemblyContexts"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="assemblyContexts" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="assemblyContexts" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="assemblyConnectors"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="assemblyConnectors" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="assemblyConnectors" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="providedDelegationConnectors"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="providedDelegationConnectors" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="providedDelegationConnectors" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="requiredDelegationConnectors"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="requiredDelegationConnectors" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="requiredDelegationConnectors" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="InfluencingParameter_Impl">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencingParameter"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="InfluencingParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="description"/>
+        <elements xsi:type="xtext:Assignment" feature="description" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="behavior"/>
+        <elements xsi:type="xtext:Assignment" feature="behavior" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ServiceBehaviorAbstraction"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="scope"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ResponseTimeSpecification">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ResponseTimeSpecification"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ResponseTimeSpecification"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ResponseTimeSpecification"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Scope">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//Scope"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Scope"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="interfaceProvidingRequiringEntity"/>
+        <elements xsi:type="xtext:Assignment" feature="interfaceProvidingRequiringEntity" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InterfaceProvidingRequiringEntity"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ServiceInputParameter">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//ServiceInputParameter"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ServiceInputParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="description"/>
+        <elements xsi:type="xtext:Assignment" feature="description" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="characterization"/>
+        <elements xsi:type="xtext:Assignment" feature="characterization" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="behavior"/>
+        <elements xsi:type="xtext:Assignment" feature="behavior" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ServiceBehaviorAbstraction"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="signature"/>
+        <elements xsi:type="xtext:Assignment" feature="signature" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="parameter"/>
+          <elements xsi:type="xtext:Assignment" feature="parameter" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Parameter"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="returnType"/>
+          <elements xsi:type="xtext:Assignment" feature="returnType" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="providedRole"/>
+        <elements xsi:type="xtext:Assignment" feature="providedRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//ProvidedRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="scope"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExternalCallReturnParameter">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//ExternalCallReturnParameter"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ExternalCallReturnParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="description"/>
+        <elements xsi:type="xtext:Assignment" feature="description" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="characterization"/>
+        <elements xsi:type="xtext:Assignment" feature="characterization" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="behavior"/>
+        <elements xsi:type="xtext:Assignment" feature="behavior" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ServiceBehaviorAbstraction"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="signature"/>
+        <elements xsi:type="xtext:Assignment" feature="signature" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="parameter"/>
+          <elements xsi:type="xtext:Assignment" feature="parameter" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Parameter"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="returnType"/>
+          <elements xsi:type="xtext:Assignment" feature="returnType" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="externalCall"/>
+        <elements xsi:type="xtext:Assignment" feature="externalCall" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ExternalCall"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="scope"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExternalCallParameter">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//ExternalCallParameter"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ExternalCallParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="description"/>
+        <elements xsi:type="xtext:Assignment" feature="description" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="characterization"/>
+        <elements xsi:type="xtext:Assignment" feature="characterization" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="behavior"/>
+        <elements xsi:type="xtext:Assignment" feature="behavior" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ServiceBehaviorAbstraction"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="signature"/>
+        <elements xsi:type="xtext:Assignment" feature="signature" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="parameter"/>
+          <elements xsi:type="xtext:Assignment" feature="parameter" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Parameter"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="returnType"/>
+          <elements xsi:type="xtext:Assignment" feature="returnType" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//DataType"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="externallCall"/>
+        <elements xsi:type="xtext:Assignment" feature="externallCall" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.1">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ExternalCall"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="scope"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="scope" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.33"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="FineGrainedBehavior">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//FineGrainedBehavior"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="FineGrainedBehavior"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="describedSignature"/>
+          <elements xsi:type="xtext:Assignment" feature="describedSignature" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="basicComponent"/>
+        <elements xsi:type="xtext:Assignment" feature="basicComponent" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//BasicComponent"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="influencingParameter"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="influencingParameter" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="influencingParameter" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="actions"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="behavior"/>
+        <elements xsi:type="xtext:Assignment" feature="behavior" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="AbstractAction_Impl">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="AbstractAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ComponentInternalBehavior_Impl">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ComponentInternalBehavior"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ComponentInternalBehavior"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ComponentInternalBehavior"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="actions"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.9"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="StartAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//StartAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//StartAction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="StartAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="StopAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//StopAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//StopAction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="StopAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="AcquireAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AcquireAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="AcquireAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="passiveResource"/>
+        <elements xsi:type="xtext:Assignment" feature="passiveResource" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.5">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourceconfiguration/0.1#//PassiveResourceSpecification"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ReleaseAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ReleaseAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ReleaseAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="passiveResource"/>
+        <elements xsi:type="xtext:Assignment" feature="passiveResource" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.5">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourceconfiguration/0.1#//PassiveResourceSpecification"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="InternalAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//InternalAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.1">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//InternalAction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="InternalAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="resourceDemandSpecification"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="resourceDemandSpecification" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="resourceDemandSpecification" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ForkAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ForkAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Assignment" feature="withSynchronizationBarrier" operator="?=">
+          <terminal xsi:type="xtext:Keyword" value="withSynchronizationBarrier"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ForkAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="forkedBehaviors"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="forkedBehaviors" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="forkedBehaviors" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BranchAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//BranchAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="BranchAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="branches"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="branches" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="branches" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="branchProbabilities"/>
+        <elements xsi:type="xtext:Assignment" feature="branchProbabilities" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="LoopAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//LoopAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="LoopAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="loopBodyBehavior"/>
+        <elements xsi:type="xtext:Assignment" feature="loopBodyBehavior" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="loopIterationCountDistribution"/>
+        <elements xsi:type="xtext:Assignment" feature="loopIterationCountDistribution" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExternalCallAction">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ExternalCallAction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ExternalCallAction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="predecessor"/>
+          <elements xsi:type="xtext:Assignment" feature="predecessor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="successor"/>
+          <elements xsi:type="xtext:Assignment" feature="successor" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//AbstractAction"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="signature"/>
+        <elements xsi:type="xtext:Assignment" feature="signature" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="requiredRole"/>
+        <elements xsi:type="xtext:Assignment" feature="requiredRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RequiredRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="PassiveResourceSpecification">
+      <type metamodel="/0/@metamodelDeclarations.5">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourceconfiguration/0.1#//PassiveResourceSpecification"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="PassiveResourceSpecification"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="passiveResourceType"/>
+        <elements xsi:type="xtext:Assignment" feature="passiveResourceType" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.7">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourcetype/0.1#//PassiveResourceType"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="capacity"/>
+        <elements xsi:type="xtext:Assignment" feature="capacity" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="PassiveResourceCapacity">
+      <type metamodel="/0/@metamodelDeclarations.5">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourceconfiguration/0.1#//PassiveResourceCapacity"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="PassiveResourceCapacity"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="capacity"/>
+        <elements xsi:type="xtext:Assignment" feature="capacity" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="PassiveResourceType">
+      <type metamodel="/0/@metamodelDeclarations.7">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourcetype/0.1#//PassiveResourceType"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="PassiveResourceType"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EBigInteger">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" cardinality="?" value="-"/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ResourceDemandSpecification">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ResourceDemandSpecification"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ResourceDemandSpecification"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="processingResourceType"/>
+        <elements xsi:type="xtext:Assignment" feature="processingResourceType" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.7">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourcetype/0.1#//ProcessingResourceType"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProcessingResourceType_Impl">
+      <type metamodel="/0/@metamodelDeclarations.7">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourcetype/0.1#//ProcessingResourceType"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ProcessingResourceType"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CommunicationLinkResourceType">
+      <type metamodel="/0/@metamodelDeclarations.7">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/resourcetype/0.1#//CommunicationLinkResourceType"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CommunicationLinkResourceType"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EBoolean">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:Keyword" value="true"/>
+        <elements xsi:type="xtext:Keyword" value="false"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BranchTransition">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//BranchTransition"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="BranchTransition"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="branchBehavior"/>
+        <elements xsi:type="xtext:Assignment" feature="branchBehavior" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.10"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BranchProbabilities">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//BranchProbabilities"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="BranchProbabilities"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="probabilities"/>
+        <elements xsi:type="xtext:Assignment" feature="probabilities" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.6">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//RandomVariable"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="RandomVariable">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//RandomVariable"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="RandomVariable"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="specification"/>
+        <elements xsi:type="xtext:Assignment" feature="specification" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="probFunction"/>
+        <elements xsi:type="xtext:Assignment" feature="probFunction" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.6">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityFunction"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProbabilityMassFunction">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityMassFunction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.6">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityMassFunction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ProbabilityMassFunction"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="sample"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProbabilityDensityFunction_Impl">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityDensityFunction"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.6">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ProbabilityDensityFunction"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ProbabilityDensityFunction"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="BoxedPDF">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//BoxedPDF"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.6">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//BoxedPDF"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="BoxedPDF"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="sample"/>
+          <elements xsi:type="xtext:Keyword" value="{"/>
+          <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="sample" operator="+=">
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="}"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ContinuousPDF_Impl">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ContinuousPDF"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.6">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ContinuousPDF"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ContinuousPDF"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="NormalDistribution">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//NormalDistribution"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="NormalDistribution"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="mu"/>
+        <elements xsi:type="xtext:Assignment" feature="mu" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="sigma"/>
+        <elements xsi:type="xtext:Assignment" feature="sigma" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExponentialDistribution">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ExponentialDistribution"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ExponentialDistribution"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="rate"/>
+        <elements xsi:type="xtext:Assignment" feature="rate" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Sample">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//Sample"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Sample"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="probability"/>
+        <elements xsi:type="xtext:Assignment" feature="probability" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="value"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.2">
+              <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EObject">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.2">
+            <classifier xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="EObject"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EBigDecimal">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:RuleCall" cardinality="?" rule="/1/@rules.1"/>
+        <elements xsi:type="xtext:Keyword" value="."/>
+        <elements xsi:type="xtext:RuleCall" rule="/1/@rules.1"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ContinuousSample">
+      <type metamodel="/0/@metamodelDeclarations.6">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//ContinuousSample"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ContinuousSample"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="value"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="probability"/>
+        <elements xsi:type="xtext:Assignment" feature="probability" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="LoopIterationCountDistribution">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//LoopIterationCountDistribution"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="LoopIterationCountDistribution"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="loopIterationCountDistribution"/>
+        <elements xsi:type="xtext:Assignment" feature="loopIterationCountDistribution" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.6">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//RandomVariable"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="AssemblyContext">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyContext"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="AssemblyContext"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="encapsulatedComponent"/>
+        <elements xsi:type="xtext:Assignment" feature="encapsulatedComponent" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RepositoryComponent"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="AssemblyConnector">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyConnector"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="AssemblyConnector"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="requiredRole"/>
+        <elements xsi:type="xtext:Assignment" feature="requiredRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RequiredRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="providedRole"/>
+        <elements xsi:type="xtext:Assignment" feature="providedRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//ProvidedRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="providingAssemblyContext"/>
+        <elements xsi:type="xtext:Assignment" feature="providingAssemblyContext" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyContext"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="requiringAssemblyContext"/>
+        <elements xsi:type="xtext:Assignment" feature="requiringAssemblyContext" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyContext"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ProvidedDelegationConnector">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//ProvidedDelegationConnector"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ProvidedDelegationConnector"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="assemblyContext"/>
+        <elements xsi:type="xtext:Assignment" feature="assemblyContext" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyContext"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="innerProvidedRole"/>
+        <elements xsi:type="xtext:Assignment" feature="innerProvidedRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//ProvidedRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="outerProvidedRole"/>
+        <elements xsi:type="xtext:Assignment" feature="outerProvidedRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//ProvidedRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="RequiredDelegationConnector">
+      <type metamodel="/0/@metamodelDeclarations.3">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RequiredDelegationConnector"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="RequiredDelegationConnector"/>
+        <elements xsi:type="xtext:Assignment" feature="id" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="name"/>
+        <elements xsi:type="xtext:Assignment" feature="name" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="assemblyContext"/>
+        <elements xsi:type="xtext:Assignment" feature="assemblyContext" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyContext"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="innerRequiredRole"/>
+        <elements xsi:type="xtext:Assignment" feature="innerRequiredRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RequiredRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="outerRequiredRole"/>
+        <elements xsi:type="xtext:Assignment" feature="outerRequiredRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RequiredRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:EnumRule" name="CharacterizationType">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EEnum" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//CharacterizationType"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//CharacterizationType/VALUE"/>
+          <literal value="VALUE"/>
+        </elements>
+        <elements xsi:type="xtext:EnumLiteralDeclaration">
+          <enumLiteral href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//CharacterizationType/NUMBER_OF_ELEMENTS"/>
+          <literal value="NUMBER_OF_ELEMENTS"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExternalCall_Impl">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ExternalCall"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ExternalCall"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="signature"/>
+        <elements xsi:type="xtext:Assignment" feature="signature" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//Signature"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="requiredRole"/>
+        <elements xsi:type="xtext:Assignment" feature="requiredRole" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//RequiredRole"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExternalCallFrequency">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ExternalCallFrequency"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="ExternalCallFrequency"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="externalCall"/>
+        <elements xsi:type="xtext:Assignment" feature="externalCall" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.8"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="frequency"/>
+        <elements xsi:type="xtext:Assignment" feature="frequency" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.78"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CallFrequency">
+      <type metamodel="/0/@metamodelDeclarations.1">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//CallFrequency"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CallFrequency"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="frequency"/>
+        <elements xsi:type="xtext:Assignment" feature="frequency" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.6">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/functions/0.1#//RandomVariable"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="DependencyRelationship">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//DependencyRelationship"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="DependencyRelationship"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="surroundingEntity"/>
+        <elements xsi:type="xtext:Assignment" feature="surroundingEntity" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InterfaceProvidingRequiringEntity"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="influencedVariable"/>
+        <elements xsi:type="xtext:Assignment" feature="influencedVariable" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencedVariable"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="influencingParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="influencingParameter" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencingParameter"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="CorrelationRelationship">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//CorrelationRelationship"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="CorrelationRelationship"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Keyword" value="surroundingEntity"/>
+        <elements xsi:type="xtext:Assignment" feature="surroundingEntity" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.3">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//InterfaceProvidingRequiringEntity"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="leftInfluencingParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="leftInfluencingParameter" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencingParameter"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="rightInfluencingParameter"/>
+        <elements xsi:type="xtext:Assignment" feature="rightInfluencingParameter" operator="=">
+          <terminal xsi:type="xtext:CrossReference">
+            <type metamodel="/0/@metamodelDeclarations.0">
+              <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencingParameter"/>
+            </type>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="leftComponentInstanceReference"/>
+        <elements xsi:type="xtext:Assignment" feature="leftComponentInstanceReference" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.82"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="rightComponentInstanceReference"/>
+        <elements xsi:type="xtext:Assignment" feature="rightComponentInstanceReference" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.82"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="InfluencedVariable">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencedVariable"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//InfluencedVariable"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="InfluencedVariable"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="controlFlowVariable"/>
+          <elements xsi:type="xtext:Assignment" feature="controlFlowVariable" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.0">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//ControlFlowSpecification"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="resourceDemand"/>
+          <elements xsi:type="xtext:Assignment" feature="resourceDemand" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ResourceDemandSpecification"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="responseTime"/>
+          <elements xsi:type="xtext:Assignment" feature="responseTime" operator="=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.1">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/servicebehavior/0.1#//ResponseTimeSpecification"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ComponentInstanceReference">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//ComponentInstanceReference"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Action">
+          <type metamodel="/0/@metamodelDeclarations.0">
+            <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/parameterdependencies/0.1#//ComponentInstanceReference"/>
+          </type>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="ComponentInstanceReference"/>
+        <elements xsi:type="xtext:Keyword" value="{"/>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="assemblies"/>
+          <elements xsi:type="xtext:Keyword" value="("/>
+          <elements xsi:type="xtext:Assignment" feature="assemblies" operator="+=">
+            <terminal xsi:type="xtext:CrossReference">
+              <type metamodel="/0/@metamodelDeclarations.3">
+                <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyContext"/>
+              </type>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+            </terminal>
+          </elements>
+          <elements xsi:type="xtext:Group" cardinality="*">
+            <elements xsi:type="xtext:Keyword" value=","/>
+            <elements xsi:type="xtext:Assignment" feature="assemblies" operator="+=">
+              <terminal xsi:type="xtext:CrossReference">
+                <type metamodel="/0/@metamodelDeclarations.3">
+                  <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/repository/0.1#//AssemblyContext"/>
+                </type>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.13"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value=")"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value="}"/>
+      </alternatives>
+    </rules>
+  </xtext:Grammar>
+  <xtext:Grammar name="org.eclipse.xtext.common.Terminals" definesHiddenTokens="true" hiddenTokens="/1/@rules.5 /1/@rules.3 /1/@rules.4">
+    <metamodelDeclarations xsi:type="xtext:ReferencedMetamodel" alias="ecore">
+      <ePackage href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </metamodelDeclarations>
+    <rules xsi:type="xtext:TerminalRule" name="ID">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" cardinality="?" value="^"/>
+        <elements xsi:type="xtext:Alternatives">
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="a"/>
+            <right value="z"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="A"/>
+            <right value="Z"/>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="_"/>
+        </elements>
+        <elements xsi:type="xtext:Alternatives" cardinality="*">
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="a"/>
+            <right value="z"/>
+          </elements>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="A"/>
+            <right value="Z"/>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="_"/>
+          <elements xsi:type="xtext:CharacterRange">
+            <left value="0"/>
+            <right value="9"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="INT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+      </type>
+      <alternatives xsi:type="xtext:CharacterRange" cardinality="+">
+        <left value="0"/>
+        <right value="9"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="STRING">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:Group">
+          <elements xsi:type="xtext:Keyword" value="&quot;"/>
+          <elements xsi:type="xtext:Alternatives" cardinality="*">
+            <elements xsi:type="xtext:Group">
+              <elements xsi:type="xtext:Keyword" value="\"/>
+              <elements xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="b"/>
+                <elements xsi:type="xtext:Keyword" value="t"/>
+                <elements xsi:type="xtext:Keyword" value="n"/>
+                <elements xsi:type="xtext:Keyword" value="f"/>
+                <elements xsi:type="xtext:Keyword" value="r"/>
+                <elements xsi:type="xtext:Keyword" value="u"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+                <elements xsi:type="xtext:Keyword" value="\"/>
+              </elements>
+            </elements>
+            <elements xsi:type="xtext:NegatedToken">
+              <terminal xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="\"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="&quot;"/>
+        </elements>
+        <elements xsi:type="xtext:Group">
+          <elements xsi:type="xtext:Keyword" value="'"/>
+          <elements xsi:type="xtext:Alternatives" cardinality="*">
+            <elements xsi:type="xtext:Group">
+              <elements xsi:type="xtext:Keyword" value="\"/>
+              <elements xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="b"/>
+                <elements xsi:type="xtext:Keyword" value="t"/>
+                <elements xsi:type="xtext:Keyword" value="n"/>
+                <elements xsi:type="xtext:Keyword" value="f"/>
+                <elements xsi:type="xtext:Keyword" value="r"/>
+                <elements xsi:type="xtext:Keyword" value="u"/>
+                <elements xsi:type="xtext:Keyword" value="&quot;"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+                <elements xsi:type="xtext:Keyword" value="\"/>
+              </elements>
+            </elements>
+            <elements xsi:type="xtext:NegatedToken">
+              <terminal xsi:type="xtext:Alternatives">
+                <elements xsi:type="xtext:Keyword" value="\"/>
+                <elements xsi:type="xtext:Keyword" value="'"/>
+              </terminal>
+            </elements>
+          </elements>
+          <elements xsi:type="xtext:Keyword" value="'"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="ML_COMMENT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="/*"/>
+        <elements xsi:type="xtext:UntilToken">
+          <terminal xsi:type="xtext:Keyword" value="*/"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="SL_COMMENT">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="//"/>
+        <elements xsi:type="xtext:NegatedToken" cardinality="*">
+          <terminal xsi:type="xtext:Alternatives">
+            <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+            <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+          </terminal>
+        </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" cardinality="?" value="&#xD;"/>
+          <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="WS">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives" cardinality="+">
+        <elements xsi:type="xtext:Keyword" value=" "/>
+        <elements xsi:type="xtext:Keyword" value="&#x9;"/>
+        <elements xsi:type="xtext:Keyword" value="&#xD;"/>
+        <elements xsi:type="xtext:Keyword" value="&#xA;"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:TerminalRule" name="ANY_OTHER">
+      <type metamodel="/1/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </type>
+      <alternatives xsi:type="xtext:Wildcard"/>
+    </rules>
+  </xtext:Grammar>
+</xmi:XMI>
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLStandaloneSetupGenerated.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLStandaloneSetupGenerated.java
new file mode 100644
index 0000000000000000000000000000000000000000..5fdc9c433e64dd91acade49774eca4e5f5a3707a
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLStandaloneSetupGenerated.java
@@ -0,0 +1,40 @@
+
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class RepositoryDSLStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.xtext.common.TerminalsStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new edu.kit.ipd.descartes.mm.applicationlevel.repository.text.RepositoryDSLRuntimeModule());
+	}
+	
+	public void register(Injector injector) {
+
+		org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+		org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("repositoryDSL", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("repositoryDSL", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parseTreeConstruction/RepositoryDSLParsetreeConstructor.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parseTreeConstruction/RepositoryDSLParsetreeConstructor.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce41318d16b91b249e4da51d501ca569223a6266
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parseTreeConstruction/RepositoryDSLParsetreeConstructor.java
@@ -0,0 +1,31625 @@
+/*
+* generated by Xtext
+*/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parseTreeConstruction;
+
+import org.eclipse.emf.ecore.*;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parsetree.reconstr.IEObjectConsumer;
+import org.eclipse.xtext.parsetree.reconstr.impl.AbstractParseTreeConstructor;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services.RepositoryDSLGrammarAccess;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("all")
+public class RepositoryDSLParsetreeConstructor extends AbstractParseTreeConstructor {
+		
+	@Inject
+	private RepositoryDSLGrammarAccess grammarAccess;
+	
+	@Override
+	protected AbstractToken getRootToken(IEObjectConsumer inst) {
+		return new ThisRootNode(inst);	
+	}
+	
+protected class ThisRootNode extends RootToken {
+	public ThisRootNode(IEObjectConsumer inst) {
+		super(inst);
+	}
+	
+	@Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group(this, this, 0, inst);
+			case 1: return new DataType_Alternatives(this, this, 1, inst);
+			case 2: return new RepositoryComponent_Alternatives(this, this, 2, inst);
+			case 3: return new Relationship_Alternatives(this, this, 3, inst);
+			case 4: return new InfluencingParameter_Alternatives(this, this, 4, inst);
+			case 5: return new InterfaceProvidingEntity_Alternatives(this, this, 5, inst);
+			case 6: return new InterfaceProvidingRequiringEntity_Alternatives(this, this, 6, inst);
+			case 7: return new ServiceBehaviorAbstraction_Alternatives(this, this, 7, inst);
+			case 8: return new ExternalCall_Alternatives(this, this, 8, inst);
+			case 9: return new AbstractAction_Alternatives(this, this, 9, inst);
+			case 10: return new ComponentInternalBehavior_Alternatives(this, this, 10, inst);
+			case 11: return new ProcessingResourceType_Alternatives(this, this, 11, inst);
+			case 12: return new ProbabilityFunction_Alternatives(this, this, 12, inst);
+			case 13: return new Interface_Group(this, this, 13, inst);
+			case 14: return new RepositoryComponent_Impl_Group(this, this, 14, inst);
+			case 15: return new CollectionDataType_Group(this, this, 15, inst);
+			case 16: return new CompositeDataType_Group(this, this, 16, inst);
+			case 17: return new PrimitiveDataType_Group(this, this, 17, inst);
+			case 18: return new InnerDeclaration_Group(this, this, 18, inst);
+			case 19: return new Signature_Group(this, this, 19, inst);
+			case 20: return new Parameter_Group(this, this, 20, inst);
+			case 21: return new ProvidedRole_Group(this, this, 21, inst);
+			case 22: return new BlackBoxBehavior_Group(this, this, 22, inst);
+			case 23: return new RequiredRole_Group(this, this, 23, inst);
+			case 24: return new CoarseGrainedBehavior_Group(this, this, 24, inst);
+			case 25: return new BasicComponent_Group(this, this, 25, inst);
+			case 26: return new CompositeComponent_Group(this, this, 26, inst);
+			case 27: return new SubSystem_Group(this, this, 27, inst);
+			case 28: return new InfluencingParameter_Impl_Group(this, this, 28, inst);
+			case 29: return new ResponseTimeSpecification_Group(this, this, 29, inst);
+			case 30: return new Scope_Group(this, this, 30, inst);
+			case 31: return new ServiceInputParameter_Group(this, this, 31, inst);
+			case 32: return new ExternalCallReturnParameter_Group(this, this, 32, inst);
+			case 33: return new ExternalCallParameter_Group(this, this, 33, inst);
+			case 34: return new FineGrainedBehavior_Group(this, this, 34, inst);
+			case 35: return new AbstractAction_Impl_Group(this, this, 35, inst);
+			case 36: return new ComponentInternalBehavior_Impl_Group(this, this, 36, inst);
+			case 37: return new StartAction_Group(this, this, 37, inst);
+			case 38: return new StopAction_Group(this, this, 38, inst);
+			case 39: return new AcquireAction_Group(this, this, 39, inst);
+			case 40: return new ReleaseAction_Group(this, this, 40, inst);
+			case 41: return new InternalAction_Group(this, this, 41, inst);
+			case 42: return new ForkAction_Group(this, this, 42, inst);
+			case 43: return new BranchAction_Group(this, this, 43, inst);
+			case 44: return new LoopAction_Group(this, this, 44, inst);
+			case 45: return new ExternalCallAction_Group(this, this, 45, inst);
+			case 46: return new PassiveResourceSpecification_Group(this, this, 46, inst);
+			case 47: return new PassiveResourceCapacity_Group(this, this, 47, inst);
+			case 48: return new PassiveResourceType_Group(this, this, 48, inst);
+			case 49: return new ResourceDemandSpecification_Group(this, this, 49, inst);
+			case 50: return new ProcessingResourceType_Impl_Group(this, this, 50, inst);
+			case 51: return new CommunicationLinkResourceType_Group(this, this, 51, inst);
+			case 52: return new BranchTransition_Group(this, this, 52, inst);
+			case 53: return new BranchProbabilities_Group(this, this, 53, inst);
+			case 54: return new RandomVariable_Group(this, this, 54, inst);
+			case 55: return new ProbabilityMassFunction_Group(this, this, 55, inst);
+			case 56: return new ProbabilityDensityFunction_Impl_Group(this, this, 56, inst);
+			case 57: return new BoxedPDF_Group(this, this, 57, inst);
+			case 58: return new ContinuousPDF_Impl_Group(this, this, 58, inst);
+			case 59: return new NormalDistribution_Group(this, this, 59, inst);
+			case 60: return new ExponentialDistribution_Group(this, this, 60, inst);
+			case 61: return new Sample_Group(this, this, 61, inst);
+			case 62: return new EObject_Group(this, this, 62, inst);
+			case 63: return new ContinuousSample_Group(this, this, 63, inst);
+			case 64: return new LoopIterationCountDistribution_Group(this, this, 64, inst);
+			case 65: return new AssemblyContext_Group(this, this, 65, inst);
+			case 66: return new AssemblyConnector_Group(this, this, 66, inst);
+			case 67: return new ProvidedDelegationConnector_Group(this, this, 67, inst);
+			case 68: return new RequiredDelegationConnector_Group(this, this, 68, inst);
+			case 69: return new ExternalCall_Impl_Group(this, this, 69, inst);
+			case 70: return new ExternalCallFrequency_Group(this, this, 70, inst);
+			case 71: return new CallFrequency_Group(this, this, 71, inst);
+			case 72: return new DependencyRelationship_Group(this, this, 72, inst);
+			case 73: return new CorrelationRelationship_Group(this, this, 73, inst);
+			case 74: return new InfluencedVariable_Group(this, this, 74, inst);
+			case 75: return new ComponentInstanceReference_Group(this, this, 75, inst);
+			default: return null;
+		}	
+	}	
+}
+	
+
+/************ begin Rule Repository ****************
+ *
+ * Repository returns repository::Repository:
+ * 	"Repository" id=EString "{" "name" name=EString ("datatypes" "{" datatypes+=DataType ("," datatypes+=DataType)* "}")?
+ * 	("interfaces" "{" interfaces+=Interface ("," interfaces+=Interface)* "}")? ("components" "{"
+ * 	components+=RepositoryComponent ("," components+=RepositoryComponent)* "}")? "}";
+ *
+ **/
+
+// "Repository" id=EString "{" "name" name=EString ("datatypes" "{" datatypes+=DataType ("," datatypes+=DataType)* "}")?
+// ("interfaces" "{" interfaces+=Interface ("," interfaces+=Interface)* "}")? ("components" "{"
+// components+=RepositoryComponent ("," components+=RepositoryComponent)* "}")? "}"
+protected class Repository_Group extends GroupToken {
+	
+	public Repository_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRepositoryRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Repository"
+protected class Repository_RepositoryKeyword_0 extends KeywordToken  {
+	
+	public Repository_RepositoryKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getRepositoryKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class Repository_IdAssignment_1 extends AssignmentToken  {
+	
+	public Repository_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_RepositoryKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRepositoryAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRepositoryAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class Repository_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public Repository_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class Repository_NameKeyword_3 extends KeywordToken  {
+	
+	public Repository_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class Repository_NameAssignment_4 extends AssignmentToken  {
+	
+	public Repository_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRepositoryAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRepositoryAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("datatypes" "{" datatypes+=DataType ("," datatypes+=DataType)* "}")?
+protected class Repository_Group_5 extends GroupToken {
+	
+	public Repository_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_RightCurlyBracketKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "datatypes"
+protected class Repository_DatatypesKeyword_5_0 extends KeywordToken  {
+	
+	public Repository_DatatypesKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getDatatypesKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class Repository_LeftCurlyBracketKeyword_5_1 extends KeywordToken  {
+	
+	public Repository_LeftCurlyBracketKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_DatatypesKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// datatypes+=DataType
+protected class Repository_DatatypesAssignment_5_2 extends AssignmentToken  {
+	
+	public Repository_DatatypesAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getDatatypesAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DataType_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("datatypes",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("datatypes");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getDataTypeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryAccess().getDatatypesDataTypeParserRuleCall_5_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Repository_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," datatypes+=DataType)*
+protected class Repository_Group_5_3 extends GroupToken {
+	
+	public Repository_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_DatatypesAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Repository_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public Repository_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_DatatypesAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// datatypes+=DataType
+protected class Repository_DatatypesAssignment_5_3_1 extends AssignmentToken  {
+	
+	public Repository_DatatypesAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getDatatypesAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DataType_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("datatypes",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("datatypes");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getDataTypeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryAccess().getDatatypesDataTypeParserRuleCall_5_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Repository_CommaKeyword_5_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class Repository_RightCurlyBracketKeyword_5_4 extends KeywordToken  {
+	
+	public Repository_RightCurlyBracketKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_DatatypesAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("interfaces" "{" interfaces+=Interface ("," interfaces+=Interface)* "}")?
+protected class Repository_Group_6 extends GroupToken {
+	
+	public Repository_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "interfaces"
+protected class Repository_InterfacesKeyword_6_0 extends KeywordToken  {
+	
+	public Repository_InterfacesKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getInterfacesKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class Repository_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public Repository_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_InterfacesKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// interfaces+=Interface
+protected class Repository_InterfacesAssignment_6_2 extends AssignmentToken  {
+	
+	public Repository_InterfacesAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getInterfacesAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("interfaces",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("interfaces");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInterfaceRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryAccess().getInterfacesInterfaceParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Repository_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," interfaces+=Interface)*
+protected class Repository_Group_6_3 extends GroupToken {
+	
+	public Repository_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_InterfacesAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Repository_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public Repository_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_InterfacesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// interfaces+=Interface
+protected class Repository_InterfacesAssignment_6_3_1 extends AssignmentToken  {
+	
+	public Repository_InterfacesAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getInterfacesAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("interfaces",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("interfaces");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInterfaceRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryAccess().getInterfacesInterfaceParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Repository_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class Repository_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public Repository_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_InterfacesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("components" "{" components+=RepositoryComponent ("," components+=RepositoryComponent)* "}")?
+protected class Repository_Group_7 extends GroupToken {
+	
+	public Repository_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getGroup_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "components"
+protected class Repository_ComponentsKeyword_7_0 extends KeywordToken  {
+	
+	public Repository_ComponentsKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getComponentsKeyword_7_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Repository_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class Repository_LeftCurlyBracketKeyword_7_1 extends KeywordToken  {
+	
+	public Repository_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_7_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_ComponentsKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// components+=RepositoryComponent
+protected class Repository_ComponentsAssignment_7_2 extends AssignmentToken  {
+	
+	public Repository_ComponentsAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getComponentsAssignment_7_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("components",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("components");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRepositoryComponentRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryAccess().getComponentsRepositoryComponentParserRuleCall_7_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Repository_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," components+=RepositoryComponent)*
+protected class Repository_Group_7_3 extends GroupToken {
+	
+	public Repository_Group_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getGroup_7_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_ComponentsAssignment_7_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Repository_CommaKeyword_7_3_0 extends KeywordToken  {
+	
+	public Repository_CommaKeyword_7_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getCommaKeyword_7_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_ComponentsAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// components+=RepositoryComponent
+protected class Repository_ComponentsAssignment_7_3_1 extends AssignmentToken  {
+	
+	public Repository_ComponentsAssignment_7_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getComponentsAssignment_7_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("components",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("components");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRepositoryComponentRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryAccess().getComponentsRepositoryComponentParserRuleCall_7_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Repository_CommaKeyword_7_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class Repository_RightCurlyBracketKeyword_7_4 extends KeywordToken  {
+	
+	public Repository_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_7_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_ComponentsAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class Repository_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public Repository_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Repository_Group_7(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Repository_Group_6(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Repository_Group_5(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new Repository_NameAssignment_4(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Repository ****************/
+
+
+/************ begin Rule DataType ****************
+ *
+ * DataType returns repository::DataType:
+ * 	CollectionDataType | CompositeDataType | PrimitiveDataType;
+ *
+ **/
+
+// CollectionDataType | CompositeDataType | PrimitiveDataType
+protected class DataType_Alternatives extends AlternativesToken {
+
+	public DataType_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getDataTypeAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DataType_CollectionDataTypeParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new DataType_CompositeDataTypeParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new DataType_PrimitiveDataTypeParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCollectionDataTypeRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getCompositeDataTypeRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getPrimitiveDataTypeRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// CollectionDataType
+protected class DataType_CollectionDataTypeParserRuleCall_0 extends RuleCallToken {
+	
+	public DataType_CollectionDataTypeParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getDataTypeAccess().getCollectionDataTypeParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCollectionDataTypeRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CollectionDataType_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CompositeDataType
+protected class DataType_CompositeDataTypeParserRuleCall_1 extends RuleCallToken {
+	
+	public DataType_CompositeDataTypeParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getDataTypeAccess().getCompositeDataTypeParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompositeDataTypeRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CompositeDataType_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// PrimitiveDataType
+protected class DataType_PrimitiveDataTypeParserRuleCall_2 extends RuleCallToken {
+	
+	public DataType_PrimitiveDataTypeParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getDataTypeAccess().getPrimitiveDataTypeParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PrimitiveDataType_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPrimitiveDataTypeRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(PrimitiveDataType_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule DataType ****************/
+
+
+/************ begin Rule RepositoryComponent ****************
+ *
+ * RepositoryComponent returns repository::RepositoryComponent:
+ * 	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+ *
+ **/
+
+// RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem
+protected class RepositoryComponent_Alternatives extends AlternativesToken {
+
+	public RepositoryComponent_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getRepositoryComponentAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_RepositoryComponent_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_BasicComponentParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new RepositoryComponent_CompositeComponentParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new RepositoryComponent_SubSystemParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBasicComponentRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getCompositeComponentRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getRepositoryComponent_ImplRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getSubSystemRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// RepositoryComponent_Impl
+protected class RepositoryComponent_RepositoryComponent_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public RepositoryComponent_RepositoryComponent_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getRepositoryComponentAccess().getRepositoryComponent_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRepositoryComponent_ImplRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(RepositoryComponent_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BasicComponent
+protected class RepositoryComponent_BasicComponentParserRuleCall_1 extends RuleCallToken {
+	
+	public RepositoryComponent_BasicComponentParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getRepositoryComponentAccess().getBasicComponentParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBasicComponentRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BasicComponent_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CompositeComponent
+protected class RepositoryComponent_CompositeComponentParserRuleCall_2 extends RuleCallToken {
+	
+	public RepositoryComponent_CompositeComponentParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getRepositoryComponentAccess().getCompositeComponentParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompositeComponentRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CompositeComponent_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// SubSystem
+protected class RepositoryComponent_SubSystemParserRuleCall_3 extends RuleCallToken {
+	
+	public RepositoryComponent_SubSystemParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getRepositoryComponentAccess().getSubSystemParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSubSystemRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(SubSystem_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule RepositoryComponent ****************/
+
+
+/************ begin Rule Relationship ****************
+ *
+ * Relationship:
+ * 	DependencyRelationship | CorrelationRelationship;
+ *
+ **/
+
+// DependencyRelationship | CorrelationRelationship
+protected class Relationship_Alternatives extends AlternativesToken {
+
+	public Relationship_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getRelationshipAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Relationship_DependencyRelationshipParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Relationship_CorrelationRelationshipParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCorrelationRelationshipRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getDependencyRelationshipRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// DependencyRelationship
+protected class Relationship_DependencyRelationshipParserRuleCall_0 extends RuleCallToken {
+	
+	public Relationship_DependencyRelationshipParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getRelationshipAccess().getDependencyRelationshipParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDependencyRelationshipRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(DependencyRelationship_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CorrelationRelationship
+protected class Relationship_CorrelationRelationshipParserRuleCall_1 extends RuleCallToken {
+	
+	public Relationship_CorrelationRelationshipParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getRelationshipAccess().getCorrelationRelationshipParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCorrelationRelationshipRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CorrelationRelationship_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule Relationship ****************/
+
+
+/************ begin Rule InfluencingParameter ****************
+ *
+ * InfluencingParameter:
+ * 	InfluencingParameter_Impl | ServiceInputParameter | ExternalCallReturnParameter | ExternalCallParameter;
+ *
+ **/
+
+// InfluencingParameter_Impl | ServiceInputParameter | ExternalCallReturnParameter | ExternalCallParameter
+protected class InfluencingParameter_Alternatives extends AlternativesToken {
+
+	public InfluencingParameter_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getInfluencingParameterAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_InfluencingParameter_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InfluencingParameter_ServiceInputParameterParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new InfluencingParameter_ExternalCallReturnParameterParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new InfluencingParameter_ExternalCallParameterParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallParameterRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExternalCallReturnParameterRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getInfluencingParameter_ImplRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getServiceInputParameterRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// InfluencingParameter_Impl
+protected class InfluencingParameter_InfluencingParameter_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public InfluencingParameter_InfluencingParameter_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInfluencingParameterAccess().getInfluencingParameter_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getInfluencingParameter_ImplRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(InfluencingParameter_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ServiceInputParameter
+protected class InfluencingParameter_ServiceInputParameterParserRuleCall_1 extends RuleCallToken {
+	
+	public InfluencingParameter_ServiceInputParameterParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInfluencingParameterAccess().getServiceInputParameterParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getServiceInputParameterRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ServiceInputParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExternalCallReturnParameter
+protected class InfluencingParameter_ExternalCallReturnParameterParserRuleCall_2 extends RuleCallToken {
+	
+	public InfluencingParameter_ExternalCallReturnParameterParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInfluencingParameterAccess().getExternalCallReturnParameterParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallReturnParameterRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExternalCallReturnParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExternalCallParameter
+protected class InfluencingParameter_ExternalCallParameterParserRuleCall_3 extends RuleCallToken {
+	
+	public InfluencingParameter_ExternalCallParameterParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInfluencingParameterAccess().getExternalCallParameterParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallParameterRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExternalCallParameter_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule InfluencingParameter ****************/
+
+
+/************ begin Rule InterfaceProvidingEntity ****************
+ *
+ * InterfaceProvidingEntity returns repository::InterfaceProvidingEntity:
+ * 	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+ *
+ **/
+
+// RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem
+protected class InterfaceProvidingEntity_Alternatives extends AlternativesToken {
+
+	public InterfaceProvidingEntity_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingEntityAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InterfaceProvidingEntity_RepositoryComponent_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InterfaceProvidingEntity_BasicComponentParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new InterfaceProvidingEntity_CompositeComponentParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new InterfaceProvidingEntity_SubSystemParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBasicComponentRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getCompositeComponentRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getRepositoryComponent_ImplRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getSubSystemRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// RepositoryComponent_Impl
+protected class InterfaceProvidingEntity_RepositoryComponent_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public InterfaceProvidingEntity_RepositoryComponent_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingEntityAccess().getRepositoryComponent_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRepositoryComponent_ImplRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(RepositoryComponent_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BasicComponent
+protected class InterfaceProvidingEntity_BasicComponentParserRuleCall_1 extends RuleCallToken {
+	
+	public InterfaceProvidingEntity_BasicComponentParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingEntityAccess().getBasicComponentParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBasicComponentRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BasicComponent_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CompositeComponent
+protected class InterfaceProvidingEntity_CompositeComponentParserRuleCall_2 extends RuleCallToken {
+	
+	public InterfaceProvidingEntity_CompositeComponentParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingEntityAccess().getCompositeComponentParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompositeComponentRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CompositeComponent_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// SubSystem
+protected class InterfaceProvidingEntity_SubSystemParserRuleCall_3 extends RuleCallToken {
+	
+	public InterfaceProvidingEntity_SubSystemParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingEntityAccess().getSubSystemParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSubSystemRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(SubSystem_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule InterfaceProvidingEntity ****************/
+
+
+/************ begin Rule InterfaceProvidingRequiringEntity ****************
+ *
+ * InterfaceProvidingRequiringEntity returns repository::InterfaceProvidingRequiringEntity:
+ * 	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+ *
+ **/
+
+// RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem
+protected class InterfaceProvidingRequiringEntity_Alternatives extends AlternativesToken {
+
+	public InterfaceProvidingRequiringEntity_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingRequiringEntityAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InterfaceProvidingRequiringEntity_RepositoryComponent_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InterfaceProvidingRequiringEntity_BasicComponentParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new InterfaceProvidingRequiringEntity_CompositeComponentParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new InterfaceProvidingRequiringEntity_SubSystemParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBasicComponentRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getCompositeComponentRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getRepositoryComponent_ImplRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getSubSystemRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// RepositoryComponent_Impl
+protected class InterfaceProvidingRequiringEntity_RepositoryComponent_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public InterfaceProvidingRequiringEntity_RepositoryComponent_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingRequiringEntityAccess().getRepositoryComponent_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRepositoryComponent_ImplRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(RepositoryComponent_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BasicComponent
+protected class InterfaceProvidingRequiringEntity_BasicComponentParserRuleCall_1 extends RuleCallToken {
+	
+	public InterfaceProvidingRequiringEntity_BasicComponentParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingRequiringEntityAccess().getBasicComponentParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBasicComponentRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BasicComponent_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CompositeComponent
+protected class InterfaceProvidingRequiringEntity_CompositeComponentParserRuleCall_2 extends RuleCallToken {
+	
+	public InterfaceProvidingRequiringEntity_CompositeComponentParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingRequiringEntityAccess().getCompositeComponentParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompositeComponentRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CompositeComponent_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// SubSystem
+protected class InterfaceProvidingRequiringEntity_SubSystemParserRuleCall_3 extends RuleCallToken {
+	
+	public InterfaceProvidingRequiringEntity_SubSystemParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getInterfaceProvidingRequiringEntityAccess().getSubSystemParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSubSystemRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(SubSystem_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule InterfaceProvidingRequiringEntity ****************/
+
+
+/************ begin Rule ServiceBehaviorAbstraction ****************
+ *
+ * ServiceBehaviorAbstraction returns servicebehavior::ServiceBehaviorAbstraction:
+ * 	FineGrainedBehavior | CoarseGrainedBehavior | BlackBoxBehavior;
+ *
+ **/
+
+// FineGrainedBehavior | CoarseGrainedBehavior | BlackBoxBehavior
+protected class ServiceBehaviorAbstraction_Alternatives extends AlternativesToken {
+
+	public ServiceBehaviorAbstraction_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getServiceBehaviorAbstractionAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceBehaviorAbstraction_FineGrainedBehaviorParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ServiceBehaviorAbstraction_CoarseGrainedBehaviorParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ServiceBehaviorAbstraction_BlackBoxBehaviorParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFineGrainedBehaviorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// FineGrainedBehavior
+protected class ServiceBehaviorAbstraction_FineGrainedBehaviorParserRuleCall_0 extends RuleCallToken {
+	
+	public ServiceBehaviorAbstraction_FineGrainedBehaviorParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getServiceBehaviorAbstractionAccess().getFineGrainedBehaviorParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFineGrainedBehaviorRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FineGrainedBehavior_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CoarseGrainedBehavior
+protected class ServiceBehaviorAbstraction_CoarseGrainedBehaviorParserRuleCall_1 extends RuleCallToken {
+	
+	public ServiceBehaviorAbstraction_CoarseGrainedBehaviorParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getServiceBehaviorAbstractionAccess().getCoarseGrainedBehaviorParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CoarseGrainedBehavior_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BlackBoxBehavior
+protected class ServiceBehaviorAbstraction_BlackBoxBehaviorParserRuleCall_2 extends RuleCallToken {
+	
+	public ServiceBehaviorAbstraction_BlackBoxBehaviorParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getServiceBehaviorAbstractionAccess().getBlackBoxBehaviorParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BlackBoxBehavior_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule ServiceBehaviorAbstraction ****************/
+
+
+/************ begin Rule ExternalCall ****************
+ *
+ * ExternalCall returns servicebehavior::ExternalCall:
+ * 	ExternalCall_Impl | ExternalCallAction;
+ *
+ **/
+
+// ExternalCall_Impl | ExternalCallAction
+protected class ExternalCall_Alternatives extends AlternativesToken {
+
+	public ExternalCall_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getExternalCallAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_ExternalCall_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCall_ExternalCallActionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCall_ImplRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExternalCallActionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// ExternalCall_Impl
+protected class ExternalCall_ExternalCall_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public ExternalCall_ExternalCall_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExternalCallAccess().getExternalCall_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCall_ImplRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExternalCall_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExternalCallAction
+protected class ExternalCall_ExternalCallActionParserRuleCall_1 extends RuleCallToken {
+	
+	public ExternalCall_ExternalCallActionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getExternalCallAccess().getExternalCallActionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallActionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExternalCallAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule ExternalCall ****************/
+
+
+/************ begin Rule AbstractAction ****************
+ *
+ * AbstractAction returns servicebehavior::AbstractAction:
+ * 	AbstractAction_Impl | StartAction | StopAction | AcquireAction | ReleaseAction | InternalAction | ForkAction |
+ * 	BranchAction | LoopAction | ExternalCallAction;
+ *
+ **/
+
+// AbstractAction_Impl | StartAction | StopAction | AcquireAction | ReleaseAction | InternalAction | ForkAction |
+// BranchAction | LoopAction | ExternalCallAction
+protected class AbstractAction_Alternatives extends AlternativesToken {
+
+	public AbstractAction_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_AbstractAction_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new AbstractAction_StartActionParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new AbstractAction_StopActionParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new AbstractAction_AcquireActionParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new AbstractAction_ReleaseActionParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new AbstractAction_InternalActionParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new AbstractAction_ForkActionParserRuleCall_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new AbstractAction_BranchActionParserRuleCall_7(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new AbstractAction_LoopActionParserRuleCall_8(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new AbstractAction_ExternalCallActionParserRuleCall_9(lastRuleCallOrigin, this, 9, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getAbstractAction_ImplAccess().getAbstractActionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getAcquireActionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getBranchActionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExternalCallActionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getForkActionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getInternalActionAccess().getInternalActionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getLoopActionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getReleaseActionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStartActionAccess().getStartActionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getStopActionAccess().getStopActionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// AbstractAction_Impl
+protected class AbstractAction_AbstractAction_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public AbstractAction_AbstractAction_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getAbstractAction_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getAbstractAction_ImplAccess().getAbstractActionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(AbstractAction_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StartAction
+protected class AbstractAction_StartActionParserRuleCall_1 extends RuleCallToken {
+	
+	public AbstractAction_StartActionParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStartActionAccess().getStartActionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StartAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// StopAction
+protected class AbstractAction_StopActionParserRuleCall_2 extends RuleCallToken {
+	
+	public AbstractAction_StopActionParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStopActionAccess().getStopActionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(StopAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// AcquireAction
+protected class AbstractAction_AcquireActionParserRuleCall_3 extends RuleCallToken {
+	
+	public AbstractAction_AcquireActionParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getAcquireActionParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getAcquireActionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(AcquireAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ReleaseAction
+protected class AbstractAction_ReleaseActionParserRuleCall_4 extends RuleCallToken {
+	
+	public AbstractAction_ReleaseActionParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getReleaseActionParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getReleaseActionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ReleaseAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// InternalAction
+protected class AbstractAction_InternalActionParserRuleCall_5 extends RuleCallToken {
+	
+	public AbstractAction_InternalActionParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getInternalActionParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getInternalActionAccess().getInternalActionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(InternalAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ForkAction
+protected class AbstractAction_ForkActionParserRuleCall_6 extends RuleCallToken {
+	
+	public AbstractAction_ForkActionParserRuleCall_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getForkActionParserRuleCall_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getForkActionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ForkAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BranchAction
+protected class AbstractAction_BranchActionParserRuleCall_7 extends RuleCallToken {
+	
+	public AbstractAction_BranchActionParserRuleCall_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBranchActionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BranchAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// LoopAction
+protected class AbstractAction_LoopActionParserRuleCall_8 extends RuleCallToken {
+	
+	public AbstractAction_LoopActionParserRuleCall_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLoopActionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(LoopAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExternalCallAction
+protected class AbstractAction_ExternalCallActionParserRuleCall_9 extends RuleCallToken {
+	
+	public AbstractAction_ExternalCallActionParserRuleCall_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getAbstractActionAccess().getExternalCallActionParserRuleCall_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallActionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExternalCallAction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule AbstractAction ****************/
+
+
+/************ begin Rule ComponentInternalBehavior ****************
+ *
+ * ComponentInternalBehavior returns servicebehavior::ComponentInternalBehavior:
+ * 	ComponentInternalBehavior_Impl | FineGrainedBehavior;
+ *
+ **/
+
+// ComponentInternalBehavior_Impl | FineGrainedBehavior
+protected class ComponentInternalBehavior_Alternatives extends AlternativesToken {
+
+	public ComponentInternalBehavior_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getComponentInternalBehaviorAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_ComponentInternalBehavior_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ComponentInternalBehavior_FineGrainedBehaviorParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getFineGrainedBehaviorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// ComponentInternalBehavior_Impl
+protected class ComponentInternalBehavior_ComponentInternalBehavior_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public ComponentInternalBehavior_ComponentInternalBehavior_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getComponentInternalBehaviorAccess().getComponentInternalBehavior_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ComponentInternalBehavior_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// FineGrainedBehavior
+protected class ComponentInternalBehavior_FineGrainedBehaviorParserRuleCall_1 extends RuleCallToken {
+	
+	public ComponentInternalBehavior_FineGrainedBehaviorParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getComponentInternalBehaviorAccess().getFineGrainedBehaviorParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFineGrainedBehaviorRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(FineGrainedBehavior_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule ComponentInternalBehavior ****************/
+
+
+/************ begin Rule ProcessingResourceType ****************
+ *
+ * ProcessingResourceType returns resourcetype::ProcessingResourceType:
+ * 	ProcessingResourceType_Impl | CommunicationLinkResourceType;
+ *
+ **/
+
+// ProcessingResourceType_Impl | CommunicationLinkResourceType
+protected class ProcessingResourceType_Alternatives extends AlternativesToken {
+
+	public ProcessingResourceType_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getProcessingResourceTypeAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_ProcessingResourceType_ImplParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProcessingResourceType_CommunicationLinkResourceTypeParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCommunicationLinkResourceTypeRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProcessingResourceType_ImplRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// ProcessingResourceType_Impl
+protected class ProcessingResourceType_ProcessingResourceType_ImplParserRuleCall_0 extends RuleCallToken {
+	
+	public ProcessingResourceType_ProcessingResourceType_ImplParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProcessingResourceTypeAccess().getProcessingResourceType_ImplParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProcessingResourceType_ImplRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProcessingResourceType_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// CommunicationLinkResourceType
+protected class ProcessingResourceType_CommunicationLinkResourceTypeParserRuleCall_1 extends RuleCallToken {
+	
+	public ProcessingResourceType_CommunicationLinkResourceTypeParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProcessingResourceTypeAccess().getCommunicationLinkResourceTypeParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CommunicationLinkResourceType_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCommunicationLinkResourceTypeRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(CommunicationLinkResourceType_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule ProcessingResourceType ****************/
+
+
+/************ begin Rule ProbabilityFunction ****************
+ *
+ * ProbabilityFunction returns functions::ProbabilityFunction:
+ * 	ProbabilityMassFunction | ProbabilityDensityFunction_Impl | BoxedPDF | ContinuousPDF_Impl | NormalDistribution |
+ * 	ExponentialDistribution;
+ *
+ **/
+
+// ProbabilityMassFunction | ProbabilityDensityFunction_Impl | BoxedPDF | ContinuousPDF_Impl | NormalDistribution |
+// ExponentialDistribution
+protected class ProbabilityFunction_Alternatives extends AlternativesToken {
+
+	public ProbabilityFunction_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getProbabilityFunctionAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityFunction_ProbabilityMassFunctionParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProbabilityFunction_ProbabilityDensityFunction_ImplParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ProbabilityFunction_BoxedPDFParserRuleCall_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new ProbabilityFunction_ContinuousPDF_ImplParserRuleCall_3(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new ProbabilityFunction_NormalDistributionParserRuleCall_4(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new ProbabilityFunction_ExponentialDistributionParserRuleCall_5(lastRuleCallOrigin, this, 5, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionAction_0().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// ProbabilityMassFunction
+protected class ProbabilityFunction_ProbabilityMassFunctionParserRuleCall_0 extends RuleCallToken {
+	
+	public ProbabilityFunction_ProbabilityMassFunctionParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProbabilityFunctionAccess().getProbabilityMassFunctionParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityMassFunction_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ProbabilityDensityFunction_Impl
+protected class ProbabilityFunction_ProbabilityDensityFunction_ImplParserRuleCall_1 extends RuleCallToken {
+	
+	public ProbabilityFunction_ProbabilityDensityFunction_ImplParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProbabilityFunctionAccess().getProbabilityDensityFunction_ImplParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityDensityFunction_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ProbabilityDensityFunction_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// BoxedPDF
+protected class ProbabilityFunction_BoxedPDFParserRuleCall_2 extends RuleCallToken {
+	
+	public ProbabilityFunction_BoxedPDFParserRuleCall_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProbabilityFunctionAccess().getBoxedPDFParserRuleCall_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(BoxedPDF_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ContinuousPDF_Impl
+protected class ProbabilityFunction_ContinuousPDF_ImplParserRuleCall_3 extends RuleCallToken {
+	
+	public ProbabilityFunction_ContinuousPDF_ImplParserRuleCall_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProbabilityFunctionAccess().getContinuousPDF_ImplParserRuleCall_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousPDF_Impl_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFAction_0().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ContinuousPDF_Impl_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// NormalDistribution
+protected class ProbabilityFunction_NormalDistributionParserRuleCall_4 extends RuleCallToken {
+	
+	public ProbabilityFunction_NormalDistributionParserRuleCall_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProbabilityFunctionAccess().getNormalDistributionParserRuleCall_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(NormalDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExponentialDistribution
+protected class ProbabilityFunction_ExponentialDistributionParserRuleCall_5 extends RuleCallToken {
+	
+	public ProbabilityFunction_ExponentialDistributionParserRuleCall_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getProbabilityFunctionAccess().getExponentialDistributionParserRuleCall_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExponentialDistribution_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule ProbabilityFunction ****************/
+
+
+
+/************ begin Rule Interface ****************
+ *
+ * Interface returns repository::Interface:
+ * 	"Interface" id=EString "{" "name" name=EString ("parentInterfaces" "("
+ * 	parentInterfaces+=[repository::Interface|EString] ("," parentInterfaces+=[repository::Interface|EString])* ")")?
+ * 	("signatures" "{" signatures+=Signature ("," signatures+=Signature)* "}")? "}";
+ *
+ **/
+
+// "Interface" id=EString "{" "name" name=EString ("parentInterfaces" "(" parentInterfaces+=[repository::Interface|EString]
+// ("," parentInterfaces+=[repository::Interface|EString])* ")")? ("signatures" "{" signatures+=Signature (","
+// signatures+=Signature)* "}")? "}"
+protected class Interface_Group extends GroupToken {
+	
+	public Interface_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getInterfaceRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Interface"
+protected class Interface_InterfaceKeyword_0 extends KeywordToken  {
+	
+	public Interface_InterfaceKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getInterfaceKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class Interface_IdAssignment_1 extends AssignmentToken  {
+	
+	public Interface_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_InterfaceKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInterfaceAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getInterfaceAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class Interface_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public Interface_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class Interface_NameKeyword_3 extends KeywordToken  {
+	
+	public Interface_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class Interface_NameAssignment_4 extends AssignmentToken  {
+	
+	public Interface_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInterfaceAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getInterfaceAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("parentInterfaces" "(" parentInterfaces+=[repository::Interface|EString] (","
+// parentInterfaces+=[repository::Interface|EString])* ")")?
+protected class Interface_Group_5 extends GroupToken {
+	
+	public Interface_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_RightParenthesisKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "parentInterfaces"
+protected class Interface_ParentInterfacesKeyword_5_0 extends KeywordToken  {
+	
+	public Interface_ParentInterfacesKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getParentInterfacesKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "("
+protected class Interface_LeftParenthesisKeyword_5_1 extends KeywordToken  {
+	
+	public Interface_LeftParenthesisKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getLeftParenthesisKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_ParentInterfacesKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parentInterfaces+=[repository::Interface|EString]
+protected class Interface_ParentInterfacesAssignment_5_2 extends AssignmentToken  {
+	
+	public Interface_ParentInterfacesAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getParentInterfacesAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_LeftParenthesisKeyword_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parentInterfaces",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parentInterfaces");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_2_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_2_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("," parentInterfaces+=[repository::Interface|EString])*
+protected class Interface_Group_5_3 extends GroupToken {
+	
+	public Interface_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_ParentInterfacesAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Interface_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public Interface_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Interface_ParentInterfacesAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parentInterfaces+=[repository::Interface|EString]
+protected class Interface_ParentInterfacesAssignment_5_3_1 extends AssignmentToken  {
+	
+	public Interface_ParentInterfacesAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getParentInterfacesAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_CommaKeyword_5_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parentInterfaces",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parentInterfaces");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ")"
+protected class Interface_RightParenthesisKeyword_5_4 extends KeywordToken  {
+	
+	public Interface_RightParenthesisKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getRightParenthesisKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Interface_ParentInterfacesAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("signatures" "{" signatures+=Signature ("," signatures+=Signature)* "}")?
+protected class Interface_Group_6 extends GroupToken {
+	
+	public Interface_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "signatures"
+protected class Interface_SignaturesKeyword_6_0 extends KeywordToken  {
+	
+	public Interface_SignaturesKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getSignaturesKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Interface_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class Interface_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public Interface_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_SignaturesKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// signatures+=Signature
+protected class Interface_SignaturesAssignment_6_2 extends AssignmentToken  {
+	
+	public Interface_SignaturesAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getSignaturesAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("signatures",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("signatures");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSignatureRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getInterfaceAccess().getSignaturesSignatureParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Interface_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," signatures+=Signature)*
+protected class Interface_Group_6_3 extends GroupToken {
+	
+	public Interface_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_SignaturesAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Interface_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public Interface_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Interface_SignaturesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// signatures+=Signature
+protected class Interface_SignaturesAssignment_6_3_1 extends AssignmentToken  {
+	
+	public Interface_SignaturesAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getSignaturesAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("signatures",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("signatures");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSignatureRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getInterfaceAccess().getSignaturesSignatureParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Interface_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class Interface_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public Interface_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Interface_SignaturesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class Interface_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public Interface_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInterfaceAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Interface_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Interface_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Interface_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Interface ****************/
+
+
+/************ begin Rule RepositoryComponent_Impl ****************
+ *
+ * RepositoryComponent_Impl returns repository::RepositoryComponent:
+ * 	"RepositoryComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+ * 	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+ * 	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+ * 	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+ * 	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+ * 	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? "}";
+ *
+ **/
+
+// "RepositoryComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+// relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+// providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+// blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+// requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? "}"
+protected class RepositoryComponent_Impl_Group extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RightCurlyBracketKeyword_10(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRepositoryComponent_ImplRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "RepositoryComponent"
+protected class RepositoryComponent_Impl_RepositoryComponentKeyword_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RepositoryComponentKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRepositoryComponentKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class RepositoryComponent_Impl_IdAssignment_1 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RepositoryComponentKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRepositoryComponent_ImplAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRepositoryComponent_ImplAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class RepositoryComponent_Impl_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class RepositoryComponent_Impl_NameKeyword_3 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class RepositoryComponent_Impl_NameAssignment_4 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRepositoryComponent_ImplAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRepositoryComponent_ImplAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+protected class RepositoryComponent_Impl_Group_5 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RightParenthesisKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "relationship"
+protected class RepositoryComponent_Impl_RelationshipKeyword_5_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RelationshipKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "("
+protected class RepositoryComponent_Impl_LeftParenthesisKeyword_5_1 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_LeftParenthesisKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getLeftParenthesisKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RelationshipKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class RepositoryComponent_Impl_RelationshipAssignment_5_2 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_RelationshipAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_LeftParenthesisKeyword_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_2_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_2_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("," relationship+=[Relationship|EString])*
+protected class RepositoryComponent_Impl_Group_5_3 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RelationshipAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class RepositoryComponent_Impl_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class RepositoryComponent_Impl_RelationshipAssignment_5_3_1 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_RelationshipAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_CommaKeyword_5_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ")"
+protected class RepositoryComponent_Impl_RightParenthesisKeyword_5_4 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RightParenthesisKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRightParenthesisKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+protected class RepositoryComponent_Impl_Group_6 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "providedRoles"
+protected class RepositoryComponent_Impl_ProvidedRolesKeyword_6_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_ProvidedRolesKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class RepositoryComponent_Impl_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_ProvidedRolesKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class RepositoryComponent_Impl_ProvidedRolesAssignment_6_2 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_ProvidedRolesAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," providedRoles+=ProvidedRole)*
+protected class RepositoryComponent_Impl_Group_6_3 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_ProvidedRolesAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class RepositoryComponent_Impl_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class RepositoryComponent_Impl_ProvidedRolesAssignment_6_3_1 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_ProvidedRolesAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class RepositoryComponent_Impl_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+protected class RepositoryComponent_Impl_Group_7 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "blackBoxBehavior"
+protected class RepositoryComponent_Impl_BlackBoxBehaviorKeyword_7_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_BlackBoxBehaviorKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorKeyword_7_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new RepositoryComponent_Impl_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class RepositoryComponent_Impl_LeftCurlyBracketKeyword_7_1 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_7_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_BlackBoxBehaviorKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class RepositoryComponent_Impl_BlackBoxBehaviorAssignment_7_2 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_BlackBoxBehaviorAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorAssignment_7_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," blackBoxBehavior+=BlackBoxBehavior)*
+protected class RepositoryComponent_Impl_Group_7_3 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_7_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_BlackBoxBehaviorAssignment_7_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class RepositoryComponent_Impl_CommaKeyword_7_3_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_CommaKeyword_7_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_7_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class RepositoryComponent_Impl_BlackBoxBehaviorAssignment_7_3_1 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_BlackBoxBehaviorAssignment_7_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorAssignment_7_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_CommaKeyword_7_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class RepositoryComponent_Impl_RightCurlyBracketKeyword_7_4 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_7_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+protected class RepositoryComponent_Impl_Group_8 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RightCurlyBracketKeyword_8_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "requiredRoles"
+protected class RepositoryComponent_Impl_RequiredRolesKeyword_8_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RequiredRolesKeyword_8_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesKeyword_8_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_7(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_Group_6(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new RepositoryComponent_Impl_Group_5(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new RepositoryComponent_Impl_NameAssignment_4(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class RepositoryComponent_Impl_LeftCurlyBracketKeyword_8_1 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_LeftCurlyBracketKeyword_8_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_8_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RequiredRolesKeyword_8_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class RepositoryComponent_Impl_RequiredRolesAssignment_8_2 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_RequiredRolesAssignment_8_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesAssignment_8_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_LeftCurlyBracketKeyword_8_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," requiredRoles+=RequiredRole)*
+protected class RepositoryComponent_Impl_Group_8_3 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_8_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_8_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RequiredRolesAssignment_8_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class RepositoryComponent_Impl_CommaKeyword_8_3_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_CommaKeyword_8_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_8_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class RepositoryComponent_Impl_RequiredRolesAssignment_8_3_1 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_RequiredRolesAssignment_8_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesAssignment_8_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_CommaKeyword_8_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class RepositoryComponent_Impl_RightCurlyBracketKeyword_8_4 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RightCurlyBracketKeyword_8_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_8_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+protected class RepositoryComponent_Impl_Group_9 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_RightCurlyBracketKeyword_9_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "coarseGrainedBehavior"
+protected class RepositoryComponent_Impl_CoarseGrainedBehaviorKeyword_9_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_CoarseGrainedBehaviorKeyword_9_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorKeyword_9_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_8(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_Group_7(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new RepositoryComponent_Impl_Group_6(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new RepositoryComponent_Impl_Group_5(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new RepositoryComponent_Impl_NameAssignment_4(lastRuleCallOrigin, this, 4, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class RepositoryComponent_Impl_LeftCurlyBracketKeyword_9_1 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_LeftCurlyBracketKeyword_9_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_9_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_CoarseGrainedBehaviorKeyword_9_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class RepositoryComponent_Impl_CoarseGrainedBehaviorAssignment_9_2 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_CoarseGrainedBehaviorAssignment_9_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorAssignment_9_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_LeftCurlyBracketKeyword_9_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+protected class RepositoryComponent_Impl_Group_9_3 extends GroupToken {
+	
+	public RepositoryComponent_Impl_Group_9_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getGroup_9_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_CoarseGrainedBehaviorAssignment_9_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class RepositoryComponent_Impl_CommaKeyword_9_3_0 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_CommaKeyword_9_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_9_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class RepositoryComponent_Impl_CoarseGrainedBehaviorAssignment_9_3_1 extends AssignmentToken  {
+	
+	public RepositoryComponent_Impl_CoarseGrainedBehaviorAssignment_9_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorAssignment_9_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_CommaKeyword_9_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class RepositoryComponent_Impl_RightCurlyBracketKeyword_9_4 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RightCurlyBracketKeyword_9_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_9_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class RepositoryComponent_Impl_RightCurlyBracketKeyword_10 extends KeywordToken  {
+	
+	public RepositoryComponent_Impl_RightCurlyBracketKeyword_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RepositoryComponent_Impl_Group_9(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new RepositoryComponent_Impl_Group_8(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new RepositoryComponent_Impl_Group_7(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new RepositoryComponent_Impl_Group_6(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new RepositoryComponent_Impl_Group_5(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new RepositoryComponent_Impl_NameAssignment_4(lastRuleCallOrigin, this, 5, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule RepositoryComponent_Impl ****************/
+
+
+/************ begin Rule CollectionDataType ****************
+ *
+ * CollectionDataType returns repository::CollectionDataType:
+ * 	"CollectionDataType" id=EString "{" "name" name=EString "innerType" innerType=[repository::DataType|EString] "}";
+ *
+ **/
+
+// "CollectionDataType" id=EString "{" "name" name=EString "innerType" innerType=[repository::DataType|EString] "}"
+protected class CollectionDataType_Group extends GroupToken {
+	
+	public CollectionDataType_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCollectionDataTypeRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CollectionDataType"
+protected class CollectionDataType_CollectionDataTypeKeyword_0 extends KeywordToken  {
+	
+	public CollectionDataType_CollectionDataTypeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getCollectionDataTypeKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class CollectionDataType_IdAssignment_1 extends AssignmentToken  {
+	
+	public CollectionDataType_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_CollectionDataTypeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCollectionDataTypeAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCollectionDataTypeAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class CollectionDataType_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public CollectionDataType_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class CollectionDataType_NameKeyword_3 extends KeywordToken  {
+	
+	public CollectionDataType_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class CollectionDataType_NameAssignment_4 extends AssignmentToken  {
+	
+	public CollectionDataType_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCollectionDataTypeAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCollectionDataTypeAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "innerType"
+protected class CollectionDataType_InnerTypeKeyword_5 extends KeywordToken  {
+	
+	public CollectionDataType_InnerTypeKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getInnerTypeKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// innerType=[repository::DataType|EString]
+protected class CollectionDataType_InnerTypeAssignment_6 extends AssignmentToken  {
+	
+	public CollectionDataType_InnerTypeAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getInnerTypeAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_InnerTypeKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("innerType",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("innerType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCollectionDataTypeAccess().getInnerTypeDataTypeCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCollectionDataTypeAccess().getInnerTypeDataTypeCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class CollectionDataType_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public CollectionDataType_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCollectionDataTypeAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CollectionDataType_InnerTypeAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CollectionDataType ****************/
+
+
+/************ begin Rule CompositeDataType ****************
+ *
+ * CompositeDataType returns repository::CompositeDataType:
+ * 	"CompositeDataType" id=EString "{" "name" name=EString ("parentTypes" "("
+ * 	parentTypes+=[repository::CompositeDataType|EString] ("," parentTypes+=[repository::CompositeDataType|EString])* ")")?
+ * 	("innerDeclarations" "{" innerDeclarations+=InnerDeclaration ("," innerDeclarations+=InnerDeclaration)* "}")? "}";
+ *
+ **/
+
+// "CompositeDataType" id=EString "{" "name" name=EString ("parentTypes" "("
+// parentTypes+=[repository::CompositeDataType|EString] ("," parentTypes+=[repository::CompositeDataType|EString])* ")")?
+// ("innerDeclarations" "{" innerDeclarations+=InnerDeclaration ("," innerDeclarations+=InnerDeclaration)* "}")? "}"
+protected class CompositeDataType_Group extends GroupToken {
+	
+	public CompositeDataType_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompositeDataTypeRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CompositeDataType"
+protected class CompositeDataType_CompositeDataTypeKeyword_0 extends KeywordToken  {
+	
+	public CompositeDataType_CompositeDataTypeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getCompositeDataTypeKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class CompositeDataType_IdAssignment_1 extends AssignmentToken  {
+	
+	public CompositeDataType_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_CompositeDataTypeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCompositeDataTypeAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCompositeDataTypeAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class CompositeDataType_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public CompositeDataType_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class CompositeDataType_NameKeyword_3 extends KeywordToken  {
+	
+	public CompositeDataType_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class CompositeDataType_NameAssignment_4 extends AssignmentToken  {
+	
+	public CompositeDataType_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCompositeDataTypeAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCompositeDataTypeAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("parentTypes" "(" parentTypes+=[repository::CompositeDataType|EString] (","
+// parentTypes+=[repository::CompositeDataType|EString])* ")")?
+protected class CompositeDataType_Group_5 extends GroupToken {
+	
+	public CompositeDataType_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_RightParenthesisKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "parentTypes"
+protected class CompositeDataType_ParentTypesKeyword_5_0 extends KeywordToken  {
+	
+	public CompositeDataType_ParentTypesKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getParentTypesKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "("
+protected class CompositeDataType_LeftParenthesisKeyword_5_1 extends KeywordToken  {
+	
+	public CompositeDataType_LeftParenthesisKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getLeftParenthesisKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_ParentTypesKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parentTypes+=[repository::CompositeDataType|EString]
+protected class CompositeDataType_ParentTypesAssignment_5_2 extends AssignmentToken  {
+	
+	public CompositeDataType_ParentTypesAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getParentTypesAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_LeftParenthesisKeyword_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parentTypes",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parentTypes");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_2_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_2_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("," parentTypes+=[repository::CompositeDataType|EString])*
+protected class CompositeDataType_Group_5_3 extends GroupToken {
+	
+	public CompositeDataType_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_ParentTypesAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeDataType_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public CompositeDataType_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeDataType_ParentTypesAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parentTypes+=[repository::CompositeDataType|EString]
+protected class CompositeDataType_ParentTypesAssignment_5_3_1 extends AssignmentToken  {
+	
+	public CompositeDataType_ParentTypesAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getParentTypesAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_CommaKeyword_5_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parentTypes",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parentTypes");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ")"
+protected class CompositeDataType_RightParenthesisKeyword_5_4 extends KeywordToken  {
+	
+	public CompositeDataType_RightParenthesisKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getRightParenthesisKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeDataType_ParentTypesAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("innerDeclarations" "{" innerDeclarations+=InnerDeclaration ("," innerDeclarations+=InnerDeclaration)* "}")?
+protected class CompositeDataType_Group_6 extends GroupToken {
+	
+	public CompositeDataType_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "innerDeclarations"
+protected class CompositeDataType_InnerDeclarationsKeyword_6_0 extends KeywordToken  {
+	
+	public CompositeDataType_InnerDeclarationsKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeDataType_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeDataType_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public CompositeDataType_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_InnerDeclarationsKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// innerDeclarations+=InnerDeclaration
+protected class CompositeDataType_InnerDeclarationsAssignment_6_2 extends AssignmentToken  {
+	
+	public CompositeDataType_InnerDeclarationsAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("innerDeclarations",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("innerDeclarations");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInnerDeclarationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsInnerDeclarationParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeDataType_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," innerDeclarations+=InnerDeclaration)*
+protected class CompositeDataType_Group_6_3 extends GroupToken {
+	
+	public CompositeDataType_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_InnerDeclarationsAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeDataType_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public CompositeDataType_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeDataType_InnerDeclarationsAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// innerDeclarations+=InnerDeclaration
+protected class CompositeDataType_InnerDeclarationsAssignment_6_3_1 extends AssignmentToken  {
+	
+	public CompositeDataType_InnerDeclarationsAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("innerDeclarations",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("innerDeclarations");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInnerDeclarationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsInnerDeclarationParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeDataType_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeDataType_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public CompositeDataType_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeDataType_InnerDeclarationsAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class CompositeDataType_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public CompositeDataType_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeDataTypeAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeDataType_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeDataType_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeDataType_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CompositeDataType ****************/
+
+
+/************ begin Rule PrimitiveDataType ****************
+ *
+ * PrimitiveDataType returns repository::PrimitiveDataType:
+ * 	"PrimitiveDataType" "{" "type" type=PrimitiveTypeEnum "}";
+ *
+ **/
+
+// "PrimitiveDataType" "{" "type" type=PrimitiveTypeEnum "}"
+protected class PrimitiveDataType_Group extends GroupToken {
+	
+	public PrimitiveDataType_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getPrimitiveDataTypeAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PrimitiveDataType_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPrimitiveDataTypeRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "PrimitiveDataType"
+protected class PrimitiveDataType_PrimitiveDataTypeKeyword_0 extends KeywordToken  {
+	
+	public PrimitiveDataType_PrimitiveDataTypeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPrimitiveDataTypeAccess().getPrimitiveDataTypeKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class PrimitiveDataType_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public PrimitiveDataType_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPrimitiveDataTypeAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PrimitiveDataType_PrimitiveDataTypeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "type"
+protected class PrimitiveDataType_TypeKeyword_2 extends KeywordToken  {
+	
+	public PrimitiveDataType_TypeKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPrimitiveDataTypeAccess().getTypeKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PrimitiveDataType_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// type=PrimitiveTypeEnum
+protected class PrimitiveDataType_TypeAssignment_3 extends AssignmentToken  {
+	
+	public PrimitiveDataType_TypeAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPrimitiveDataTypeAccess().getTypeAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PrimitiveDataType_TypeKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("type",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("type");
+		if(enumLitSerializer.isValid(obj.getEObject(), grammarAccess.getPrimitiveDataTypeAccess().getTypePrimitiveTypeEnumEnumRuleCall_3_0(), value, null)) { 
+			type = AssignmentType.ENUM_RULE_CALL;
+			element = grammarAccess.getPrimitiveDataTypeAccess().getTypePrimitiveTypeEnumEnumRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class PrimitiveDataType_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public PrimitiveDataType_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPrimitiveDataTypeAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PrimitiveDataType_TypeAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule PrimitiveDataType ****************/
+
+
+/************ begin Rule InnerDeclaration ****************
+ *
+ * InnerDeclaration returns repository::InnerDeclaration:
+ * 	"InnerDeclaration" id=EString "{" "name" name=EString "dataType" dataType=[repository::DataType|EString] "}";
+ *
+ **/
+
+// "InnerDeclaration" id=EString "{" "name" name=EString "dataType" dataType=[repository::DataType|EString] "}"
+protected class InnerDeclaration_Group extends GroupToken {
+	
+	public InnerDeclaration_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getInnerDeclarationRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "InnerDeclaration"
+protected class InnerDeclaration_InnerDeclarationKeyword_0 extends KeywordToken  {
+	
+	public InnerDeclaration_InnerDeclarationKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getInnerDeclarationKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class InnerDeclaration_IdAssignment_1 extends AssignmentToken  {
+	
+	public InnerDeclaration_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_InnerDeclarationKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInnerDeclarationAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getInnerDeclarationAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class InnerDeclaration_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public InnerDeclaration_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class InnerDeclaration_NameKeyword_3 extends KeywordToken  {
+	
+	public InnerDeclaration_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class InnerDeclaration_NameAssignment_4 extends AssignmentToken  {
+	
+	public InnerDeclaration_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInnerDeclarationAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getInnerDeclarationAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "dataType"
+protected class InnerDeclaration_DataTypeKeyword_5 extends KeywordToken  {
+	
+	public InnerDeclaration_DataTypeKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getDataTypeKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// dataType=[repository::DataType|EString]
+protected class InnerDeclaration_DataTypeAssignment_6 extends AssignmentToken  {
+	
+	public InnerDeclaration_DataTypeAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getDataTypeAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_DataTypeKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("dataType",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("dataType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInnerDeclarationAccess().getDataTypeDataTypeCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInnerDeclarationAccess().getDataTypeDataTypeCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class InnerDeclaration_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public InnerDeclaration_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInnerDeclarationAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InnerDeclaration_DataTypeAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule InnerDeclaration ****************/
+
+
+/************ begin Rule Signature ****************
+ *
+ * Signature returns repository::Signature:
+ * 	"Signature" id=EString "{" "name" name=EString ("returnType" returnType=[repository::DataType|EString])? ("parameters"
+ * 	"{" parameters+=Parameter ("," parameters+=Parameter)* "}")? "}";
+ *
+ **/
+
+// "Signature" id=EString "{" "name" name=EString ("returnType" returnType=[repository::DataType|EString])? ("parameters"
+// "{" parameters+=Parameter ("," parameters+=Parameter)* "}")? "}"
+protected class Signature_Group extends GroupToken {
+	
+	public Signature_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSignatureRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Signature"
+protected class Signature_SignatureKeyword_0 extends KeywordToken  {
+	
+	public Signature_SignatureKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getSignatureKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class Signature_IdAssignment_1 extends AssignmentToken  {
+	
+	public Signature_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_SignatureKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSignatureAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getSignatureAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class Signature_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public Signature_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class Signature_NameKeyword_3 extends KeywordToken  {
+	
+	public Signature_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class Signature_NameAssignment_4 extends AssignmentToken  {
+	
+	public Signature_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSignatureAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getSignatureAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("returnType" returnType=[repository::DataType|EString])?
+protected class Signature_Group_5 extends GroupToken {
+	
+	public Signature_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_ReturnTypeAssignment_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "returnType"
+protected class Signature_ReturnTypeKeyword_5_0 extends KeywordToken  {
+	
+	public Signature_ReturnTypeKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getReturnTypeKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// returnType=[repository::DataType|EString]
+protected class Signature_ReturnTypeAssignment_5_1 extends AssignmentToken  {
+	
+	public Signature_ReturnTypeAssignment_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getReturnTypeAssignment_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_ReturnTypeKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("returnType",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("returnType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSignatureAccess().getReturnTypeDataTypeCrossReference_5_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getSignatureAccess().getReturnTypeDataTypeCrossReference_5_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("parameters" "{" parameters+=Parameter ("," parameters+=Parameter)* "}")?
+protected class Signature_Group_6 extends GroupToken {
+	
+	public Signature_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "parameters"
+protected class Signature_ParametersKeyword_6_0 extends KeywordToken  {
+	
+	public Signature_ParametersKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getParametersKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Signature_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class Signature_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public Signature_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_ParametersKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parameters+=Parameter
+protected class Signature_ParametersAssignment_6_2 extends AssignmentToken  {
+	
+	public Signature_ParametersAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getParametersAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parameters",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parameters");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSignatureAccess().getParametersParameterParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Signature_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," parameters+=Parameter)*
+protected class Signature_Group_6_3 extends GroupToken {
+	
+	public Signature_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_ParametersAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Signature_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public Signature_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Signature_ParametersAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parameters+=Parameter
+protected class Signature_ParametersAssignment_6_3_1 extends AssignmentToken  {
+	
+	public Signature_ParametersAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getParametersAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parameters",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parameters");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSignatureAccess().getParametersParameterParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new Signature_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class Signature_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public Signature_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Signature_ParametersAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class Signature_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public Signature_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSignatureAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Signature_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Signature_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new Signature_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Signature ****************/
+
+
+/************ begin Rule Parameter ****************
+ *
+ * Parameter returns repository::Parameter:
+ * 	"Parameter" name=EString "{" "modifier" modifier=ParameterModifier "dataType" dataType=[repository::DataType|EString]
+ * 	"}";
+ *
+ **/
+
+// "Parameter" name=EString "{" "modifier" modifier=ParameterModifier "dataType" dataType=[repository::DataType|EString]
+// "}"
+protected class Parameter_Group extends GroupToken {
+	
+	public Parameter_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getParameterAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getParameterRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Parameter"
+protected class Parameter_ParameterKeyword_0 extends KeywordToken  {
+	
+	public Parameter_ParameterKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParameterAccess().getParameterKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// name=EString
+protected class Parameter_NameAssignment_1 extends AssignmentToken  {
+	
+	public Parameter_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getParameterAccess().getNameAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_ParameterKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getParameterAccess().getNameEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getParameterAccess().getNameEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class Parameter_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public Parameter_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParameterAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "modifier"
+protected class Parameter_ModifierKeyword_3 extends KeywordToken  {
+	
+	public Parameter_ModifierKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParameterAccess().getModifierKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// modifier=ParameterModifier
+protected class Parameter_ModifierAssignment_4 extends AssignmentToken  {
+	
+	public Parameter_ModifierAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getParameterAccess().getModifierAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_ModifierKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("modifier",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("modifier");
+		if(enumLitSerializer.isValid(obj.getEObject(), grammarAccess.getParameterAccess().getModifierParameterModifierEnumRuleCall_4_0(), value, null)) { 
+			type = AssignmentType.ENUM_RULE_CALL;
+			element = grammarAccess.getParameterAccess().getModifierParameterModifierEnumRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "dataType"
+protected class Parameter_DataTypeKeyword_5 extends KeywordToken  {
+	
+	public Parameter_DataTypeKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParameterAccess().getDataTypeKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_ModifierAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// dataType=[repository::DataType|EString]
+protected class Parameter_DataTypeAssignment_6 extends AssignmentToken  {
+	
+	public Parameter_DataTypeAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getParameterAccess().getDataTypeAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_DataTypeKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("dataType",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("dataType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getParameterAccess().getDataTypeDataTypeCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getParameterAccess().getDataTypeDataTypeCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class Parameter_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public Parameter_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getParameterAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Parameter_DataTypeAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Parameter ****************/
+
+
+/************ begin Rule ProvidedRole ****************
+ *
+ * ProvidedRole returns repository::ProvidedRole:
+ * 	"ProvidedRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}";
+ *
+ **/
+
+// "ProvidedRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}"
+protected class ProvidedRole_Group extends GroupToken {
+	
+	public ProvidedRole_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProvidedRoleRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ProvidedRole"
+protected class ProvidedRole_ProvidedRoleKeyword_0 extends KeywordToken  {
+	
+	public ProvidedRole_ProvidedRoleKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getProvidedRoleKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class ProvidedRole_IdAssignment_1 extends AssignmentToken  {
+	
+	public ProvidedRole_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_ProvidedRoleKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProvidedRoleAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProvidedRoleAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class ProvidedRole_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ProvidedRole_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class ProvidedRole_NameKeyword_3 extends KeywordToken  {
+	
+	public ProvidedRole_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class ProvidedRole_NameAssignment_4 extends AssignmentToken  {
+	
+	public ProvidedRole_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProvidedRoleAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProvidedRoleAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "interface"
+protected class ProvidedRole_InterfaceKeyword_5 extends KeywordToken  {
+	
+	public ProvidedRole_InterfaceKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getInterfaceKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// interface=[repository::Interface|EString]
+protected class ProvidedRole_InterfaceAssignment_6 extends AssignmentToken  {
+	
+	public ProvidedRole_InterfaceAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getInterfaceAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_InterfaceKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("interface",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("interface");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleAccess().getInterfaceInterfaceCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getProvidedRoleAccess().getInterfaceInterfaceCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ProvidedRole_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public ProvidedRole_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedRoleAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_InterfaceAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ProvidedRole ****************/
+
+
+/************ begin Rule BlackBoxBehavior ****************
+ *
+ * BlackBoxBehavior returns servicebehavior::BlackBoxBehavior:
+ * 	"BlackBoxBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "describedEntity"
+ * 	describedEntity=[repository::InterfaceProvidingEntity|EString] ("influencingParameter" "{"
+ * 	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+ * 	("responseTimeSpecification" responseTimeSpecification=ResponseTimeSpecification)? "}";
+ *
+ **/
+
+// "BlackBoxBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "describedEntity"
+// describedEntity=[repository::InterfaceProvidingEntity|EString] ("influencingParameter" "{"
+// influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+// ("responseTimeSpecification" responseTimeSpecification=ResponseTimeSpecification)? "}"
+protected class BlackBoxBehavior_Group extends GroupToken {
+	
+	public BlackBoxBehavior_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "BlackBoxBehavior"
+protected class BlackBoxBehavior_BlackBoxBehaviorKeyword_0 extends KeywordToken  {
+	
+	public BlackBoxBehavior_BlackBoxBehaviorKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getBlackBoxBehaviorKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class BlackBoxBehavior_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public BlackBoxBehavior_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_BlackBoxBehaviorKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("describedSignature" describedSignature=[repository::Signature|EString])?
+protected class BlackBoxBehavior_Group_2 extends GroupToken {
+	
+	public BlackBoxBehavior_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_DescribedSignatureAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "describedSignature"
+protected class BlackBoxBehavior_DescribedSignatureKeyword_2_0 extends KeywordToken  {
+	
+	public BlackBoxBehavior_DescribedSignatureKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// describedSignature=[repository::Signature|EString]
+protected class BlackBoxBehavior_DescribedSignatureAssignment_2_1 extends AssignmentToken  {
+	
+	public BlackBoxBehavior_DescribedSignatureAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_DescribedSignatureKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("describedSignature",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("describedSignature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "describedEntity"
+protected class BlackBoxBehavior_DescribedEntityKeyword_3 extends KeywordToken  {
+	
+	public BlackBoxBehavior_DescribedEntityKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BlackBoxBehavior_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// describedEntity=[repository::InterfaceProvidingEntity|EString]
+protected class BlackBoxBehavior_DescribedEntityAssignment_4 extends AssignmentToken  {
+	
+	public BlackBoxBehavior_DescribedEntityAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_DescribedEntityKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("describedEntity",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("describedEntity");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityInterfaceProvidingEntityCrossReference_4_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityInterfaceProvidingEntityCrossReference_4_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("influencingParameter" "{" influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)*
+// "}")?
+protected class BlackBoxBehavior_Group_5 extends GroupToken {
+	
+	public BlackBoxBehavior_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_RightCurlyBracketKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "influencingParameter"
+protected class BlackBoxBehavior_InfluencingParameterKeyword_5_0 extends KeywordToken  {
+	
+	public BlackBoxBehavior_InfluencingParameterKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_DescribedEntityAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BlackBoxBehavior_LeftCurlyBracketKeyword_5_1 extends KeywordToken  {
+	
+	public BlackBoxBehavior_LeftCurlyBracketKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getLeftCurlyBracketKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_InfluencingParameterKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencingParameter+=InfluencingParameter
+protected class BlackBoxBehavior_InfluencingParameterAssignment_5_2 extends AssignmentToken  {
+	
+	public BlackBoxBehavior_InfluencingParameterAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencingParameter",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencingParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BlackBoxBehavior_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," influencingParameter+=InfluencingParameter)*
+protected class BlackBoxBehavior_Group_5_3 extends GroupToken {
+	
+	public BlackBoxBehavior_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_InfluencingParameterAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BlackBoxBehavior_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public BlackBoxBehavior_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BlackBoxBehavior_InfluencingParameterAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencingParameter+=InfluencingParameter
+protected class BlackBoxBehavior_InfluencingParameterAssignment_5_3_1 extends AssignmentToken  {
+	
+	public BlackBoxBehavior_InfluencingParameterAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencingParameter",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencingParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BlackBoxBehavior_CommaKeyword_5_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BlackBoxBehavior_RightCurlyBracketKeyword_5_4 extends KeywordToken  {
+	
+	public BlackBoxBehavior_RightCurlyBracketKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getRightCurlyBracketKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BlackBoxBehavior_InfluencingParameterAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("responseTimeSpecification" responseTimeSpecification=ResponseTimeSpecification)?
+protected class BlackBoxBehavior_Group_6 extends GroupToken {
+	
+	public BlackBoxBehavior_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_ResponseTimeSpecificationAssignment_6_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "responseTimeSpecification"
+protected class BlackBoxBehavior_ResponseTimeSpecificationKeyword_6_0 extends KeywordToken  {
+	
+	public BlackBoxBehavior_ResponseTimeSpecificationKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getResponseTimeSpecificationKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BlackBoxBehavior_DescribedEntityAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// responseTimeSpecification=ResponseTimeSpecification
+protected class BlackBoxBehavior_ResponseTimeSpecificationAssignment_6_1 extends AssignmentToken  {
+	
+	public BlackBoxBehavior_ResponseTimeSpecificationAssignment_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getResponseTimeSpecificationAssignment_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResponseTimeSpecification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("responseTimeSpecification",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("responseTimeSpecification");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getResponseTimeSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBlackBoxBehaviorAccess().getResponseTimeSpecificationResponseTimeSpecificationParserRuleCall_6_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BlackBoxBehavior_ResponseTimeSpecificationKeyword_6_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BlackBoxBehavior_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public BlackBoxBehavior_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBlackBoxBehaviorAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BlackBoxBehavior_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BlackBoxBehavior_DescribedEntityAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BlackBoxBehavior ****************/
+
+
+/************ begin Rule RequiredRole ****************
+ *
+ * RequiredRole returns repository::RequiredRole:
+ * 	"RequiredRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}";
+ *
+ **/
+
+// "RequiredRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}"
+protected class RequiredRole_Group extends GroupToken {
+	
+	public RequiredRole_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRequiredRoleRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "RequiredRole"
+protected class RequiredRole_RequiredRoleKeyword_0 extends KeywordToken  {
+	
+	public RequiredRole_RequiredRoleKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getRequiredRoleKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class RequiredRole_IdAssignment_1 extends AssignmentToken  {
+	
+	public RequiredRole_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_RequiredRoleKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRequiredRoleAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRequiredRoleAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class RequiredRole_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public RequiredRole_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class RequiredRole_NameKeyword_3 extends KeywordToken  {
+	
+	public RequiredRole_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class RequiredRole_NameAssignment_4 extends AssignmentToken  {
+	
+	public RequiredRole_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRequiredRoleAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRequiredRoleAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "interface"
+protected class RequiredRole_InterfaceKeyword_5 extends KeywordToken  {
+	
+	public RequiredRole_InterfaceKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getInterfaceKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// interface=[repository::Interface|EString]
+protected class RequiredRole_InterfaceAssignment_6 extends AssignmentToken  {
+	
+	public RequiredRole_InterfaceAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getInterfaceAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_InterfaceKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("interface",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("interface");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleAccess().getInterfaceInterfaceCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getRequiredRoleAccess().getInterfaceInterfaceCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class RequiredRole_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public RequiredRole_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredRoleAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_InterfaceAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule RequiredRole ****************/
+
+
+/************ begin Rule CoarseGrainedBehavior ****************
+ *
+ * CoarseGrainedBehavior returns servicebehavior::CoarseGrainedBehavior:
+ * 	"CoarseGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])?
+ * 	"describedEntity" describedEntity=[repository::InterfaceProvidingRequiringEntity|EString] ("influencingParameter" "{"
+ * 	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+ * 	("externalCallFrequency" "{" externalCallFrequency+=ExternalCallFrequency (","
+ * 	externalCallFrequency+=ExternalCallFrequency)* "}")? ("resourceDemandSpecification" "{"
+ * 	resourceDemandSpecification+=ResourceDemandSpecification (","
+ * 	resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}";
+ *
+ **/
+
+// "CoarseGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "describedEntity"
+// describedEntity=[repository::InterfaceProvidingRequiringEntity|EString] ("influencingParameter" "{"
+// influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+// ("externalCallFrequency" "{" externalCallFrequency+=ExternalCallFrequency (","
+// externalCallFrequency+=ExternalCallFrequency)* "}")? ("resourceDemandSpecification" "{"
+// resourceDemandSpecification+=ResourceDemandSpecification (","
+// resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}"
+protected class CoarseGrainedBehavior_Group extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CoarseGrainedBehavior"
+protected class CoarseGrainedBehavior_CoarseGrainedBehaviorKeyword_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_CoarseGrainedBehaviorKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getCoarseGrainedBehaviorKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class CoarseGrainedBehavior_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_CoarseGrainedBehaviorKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("describedSignature" describedSignature=[repository::Signature|EString])?
+protected class CoarseGrainedBehavior_Group_2 extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_DescribedSignatureAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "describedSignature"
+protected class CoarseGrainedBehavior_DescribedSignatureKeyword_2_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_DescribedSignatureKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// describedSignature=[repository::Signature|EString]
+protected class CoarseGrainedBehavior_DescribedSignatureAssignment_2_1 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_DescribedSignatureAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_DescribedSignatureKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("describedSignature",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("describedSignature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "describedEntity"
+protected class CoarseGrainedBehavior_DescribedEntityKeyword_3 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_DescribedEntityKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// describedEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+protected class CoarseGrainedBehavior_DescribedEntityAssignment_4 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_DescribedEntityAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_DescribedEntityKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("describedEntity",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("describedEntity");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("influencingParameter" "{" influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)*
+// "}")?
+protected class CoarseGrainedBehavior_Group_5 extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_RightCurlyBracketKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "influencingParameter"
+protected class CoarseGrainedBehavior_InfluencingParameterKeyword_5_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_InfluencingParameterKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_DescribedEntityAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CoarseGrainedBehavior_LeftCurlyBracketKeyword_5_1 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_LeftCurlyBracketKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_InfluencingParameterKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencingParameter+=InfluencingParameter
+protected class CoarseGrainedBehavior_InfluencingParameterAssignment_5_2 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_InfluencingParameterAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencingParameter",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencingParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," influencingParameter+=InfluencingParameter)*
+protected class CoarseGrainedBehavior_Group_5_3 extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_InfluencingParameterAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CoarseGrainedBehavior_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_InfluencingParameterAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencingParameter+=InfluencingParameter
+protected class CoarseGrainedBehavior_InfluencingParameterAssignment_5_3_1 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_InfluencingParameterAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencingParameter",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencingParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_CommaKeyword_5_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CoarseGrainedBehavior_RightCurlyBracketKeyword_5_4 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_RightCurlyBracketKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_InfluencingParameterAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("externalCallFrequency" "{" externalCallFrequency+=ExternalCallFrequency (","
+// externalCallFrequency+=ExternalCallFrequency)* "}")?
+protected class CoarseGrainedBehavior_Group_6 extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "externalCallFrequency"
+protected class CoarseGrainedBehavior_ExternalCallFrequencyKeyword_6_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_ExternalCallFrequencyKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_DescribedEntityAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CoarseGrainedBehavior_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_ExternalCallFrequencyKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// externalCallFrequency+=ExternalCallFrequency
+protected class CoarseGrainedBehavior_ExternalCallFrequencyAssignment_6_2 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_ExternalCallFrequencyAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallFrequency_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("externalCallFrequency",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("externalCallFrequency");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallFrequencyRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," externalCallFrequency+=ExternalCallFrequency)*
+protected class CoarseGrainedBehavior_Group_6_3 extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_ExternalCallFrequencyAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CoarseGrainedBehavior_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_ExternalCallFrequencyAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// externalCallFrequency+=ExternalCallFrequency
+protected class CoarseGrainedBehavior_ExternalCallFrequencyAssignment_6_3_1 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_ExternalCallFrequencyAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallFrequency_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("externalCallFrequency",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("externalCallFrequency");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallFrequencyRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CoarseGrainedBehavior_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_ExternalCallFrequencyAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("resourceDemandSpecification" "{" resourceDemandSpecification+=ResourceDemandSpecification (","
+// resourceDemandSpecification+=ResourceDemandSpecification)* "}")?
+protected class CoarseGrainedBehavior_Group_7 extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "resourceDemandSpecification"
+protected class CoarseGrainedBehavior_ResourceDemandSpecificationKeyword_7_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_ResourceDemandSpecificationKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationKeyword_7_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CoarseGrainedBehavior_DescribedEntityAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CoarseGrainedBehavior_LeftCurlyBracketKeyword_7_1 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_7_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_ResourceDemandSpecificationKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// resourceDemandSpecification+=ResourceDemandSpecification
+protected class CoarseGrainedBehavior_ResourceDemandSpecificationAssignment_7_2 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_ResourceDemandSpecificationAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationAssignment_7_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("resourceDemandSpecification",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("resourceDemandSpecification");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getResourceDemandSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," resourceDemandSpecification+=ResourceDemandSpecification)*
+protected class CoarseGrainedBehavior_Group_7_3 extends GroupToken {
+	
+	public CoarseGrainedBehavior_Group_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getGroup_7_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_ResourceDemandSpecificationAssignment_7_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CoarseGrainedBehavior_CommaKeyword_7_3_0 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_CommaKeyword_7_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_7_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_ResourceDemandSpecificationAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// resourceDemandSpecification+=ResourceDemandSpecification
+protected class CoarseGrainedBehavior_ResourceDemandSpecificationAssignment_7_3_1 extends AssignmentToken  {
+	
+	public CoarseGrainedBehavior_ResourceDemandSpecificationAssignment_7_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationAssignment_7_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("resourceDemandSpecification",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("resourceDemandSpecification");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getResourceDemandSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_CommaKeyword_7_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CoarseGrainedBehavior_RightCurlyBracketKeyword_7_4 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_7_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_ResourceDemandSpecificationAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class CoarseGrainedBehavior_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public CoarseGrainedBehavior_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group_7(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CoarseGrainedBehavior_Group_6(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CoarseGrainedBehavior_Group_5(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CoarseGrainedBehavior_DescribedEntityAssignment_4(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CoarseGrainedBehavior ****************/
+
+
+/************ begin Rule BasicComponent ****************
+ *
+ * BasicComponent returns repository::BasicComponent:
+ * 	"BasicComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+ * 	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+ * 	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+ * 	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+ * 	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+ * 	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("passiveResources" "{"
+ * 	passiveResources+=PassiveResourceSpecification ("," passiveResources+=PassiveResourceSpecification)* "}")?
+ * 	("fineGrainedBehavior" "{" fineGrainedBehavior+=FineGrainedBehavior ("," fineGrainedBehavior+=FineGrainedBehavior)*
+ * 	"}")? "}";
+ *
+ **/
+
+// "BasicComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+// relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+// providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+// blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+// requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("passiveResources" "{"
+// passiveResources+=PassiveResourceSpecification ("," passiveResources+=PassiveResourceSpecification)* "}")?
+// ("fineGrainedBehavior" "{" fineGrainedBehavior+=FineGrainedBehavior ("," fineGrainedBehavior+=FineGrainedBehavior)*
+// "}")? "}"
+protected class BasicComponent_Group extends GroupToken {
+	
+	public BasicComponent_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightCurlyBracketKeyword_12(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBasicComponentRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "BasicComponent"
+protected class BasicComponent_BasicComponentKeyword_0 extends KeywordToken  {
+	
+	public BasicComponent_BasicComponentKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getBasicComponentKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class BasicComponent_IdAssignment_1 extends AssignmentToken  {
+	
+	public BasicComponent_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_BasicComponentKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getBasicComponentAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getBasicComponentAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class BasicComponent_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public BasicComponent_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class BasicComponent_NameKeyword_3 extends KeywordToken  {
+	
+	public BasicComponent_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class BasicComponent_NameAssignment_4 extends AssignmentToken  {
+	
+	public BasicComponent_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getBasicComponentAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getBasicComponentAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+protected class BasicComponent_Group_5 extends GroupToken {
+	
+	public BasicComponent_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightParenthesisKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "relationship"
+protected class BasicComponent_RelationshipKeyword_5_0 extends KeywordToken  {
+	
+	public BasicComponent_RelationshipKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRelationshipKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "("
+protected class BasicComponent_LeftParenthesisKeyword_5_1 extends KeywordToken  {
+	
+	public BasicComponent_LeftParenthesisKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftParenthesisKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RelationshipKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class BasicComponent_RelationshipAssignment_5_2 extends AssignmentToken  {
+	
+	public BasicComponent_RelationshipAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRelationshipAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_LeftParenthesisKeyword_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_2_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_2_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("," relationship+=[Relationship|EString])*
+protected class BasicComponent_Group_5_3 extends GroupToken {
+	
+	public BasicComponent_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RelationshipAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BasicComponent_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public BasicComponent_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class BasicComponent_RelationshipAssignment_5_3_1 extends AssignmentToken  {
+	
+	public BasicComponent_RelationshipAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRelationshipAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_CommaKeyword_5_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ")"
+protected class BasicComponent_RightParenthesisKeyword_5_4 extends KeywordToken  {
+	
+	public BasicComponent_RightParenthesisKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightParenthesisKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+protected class BasicComponent_Group_6 extends GroupToken {
+	
+	public BasicComponent_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "providedRoles"
+protected class BasicComponent_ProvidedRolesKeyword_6_0 extends KeywordToken  {
+	
+	public BasicComponent_ProvidedRolesKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getProvidedRolesKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BasicComponent_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public BasicComponent_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_ProvidedRolesKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class BasicComponent_ProvidedRolesAssignment_6_2 extends AssignmentToken  {
+	
+	public BasicComponent_ProvidedRolesAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getProvidedRolesAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," providedRoles+=ProvidedRole)*
+protected class BasicComponent_Group_6_3 extends GroupToken {
+	
+	public BasicComponent_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_ProvidedRolesAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BasicComponent_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public BasicComponent_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class BasicComponent_ProvidedRolesAssignment_6_3_1 extends AssignmentToken  {
+	
+	public BasicComponent_ProvidedRolesAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getProvidedRolesAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BasicComponent_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public BasicComponent_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+protected class BasicComponent_Group_7 extends GroupToken {
+	
+	public BasicComponent_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "blackBoxBehavior"
+protected class BasicComponent_BlackBoxBehaviorKeyword_7_0 extends KeywordToken  {
+	
+	public BasicComponent_BlackBoxBehaviorKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorKeyword_7_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BasicComponent_LeftCurlyBracketKeyword_7_1 extends KeywordToken  {
+	
+	public BasicComponent_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_7_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_BlackBoxBehaviorKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class BasicComponent_BlackBoxBehaviorAssignment_7_2 extends AssignmentToken  {
+	
+	public BasicComponent_BlackBoxBehaviorAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorAssignment_7_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," blackBoxBehavior+=BlackBoxBehavior)*
+protected class BasicComponent_Group_7_3 extends GroupToken {
+	
+	public BasicComponent_Group_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_7_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_BlackBoxBehaviorAssignment_7_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BasicComponent_CommaKeyword_7_3_0 extends KeywordToken  {
+	
+	public BasicComponent_CommaKeyword_7_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCommaKeyword_7_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class BasicComponent_BlackBoxBehaviorAssignment_7_3_1 extends AssignmentToken  {
+	
+	public BasicComponent_BlackBoxBehaviorAssignment_7_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorAssignment_7_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_CommaKeyword_7_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BasicComponent_RightCurlyBracketKeyword_7_4 extends KeywordToken  {
+	
+	public BasicComponent_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_7_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+protected class BasicComponent_Group_8 extends GroupToken {
+	
+	public BasicComponent_Group_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightCurlyBracketKeyword_8_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "requiredRoles"
+protected class BasicComponent_RequiredRolesKeyword_8_0 extends KeywordToken  {
+	
+	public BasicComponent_RequiredRolesKeyword_8_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRequiredRolesKeyword_8_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_7(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_Group_6(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BasicComponent_Group_5(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BasicComponent_LeftCurlyBracketKeyword_8_1 extends KeywordToken  {
+	
+	public BasicComponent_LeftCurlyBracketKeyword_8_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_8_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RequiredRolesKeyword_8_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class BasicComponent_RequiredRolesAssignment_8_2 extends AssignmentToken  {
+	
+	public BasicComponent_RequiredRolesAssignment_8_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRequiredRolesAssignment_8_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_LeftCurlyBracketKeyword_8_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," requiredRoles+=RequiredRole)*
+protected class BasicComponent_Group_8_3 extends GroupToken {
+	
+	public BasicComponent_Group_8_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_8_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RequiredRolesAssignment_8_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BasicComponent_CommaKeyword_8_3_0 extends KeywordToken  {
+	
+	public BasicComponent_CommaKeyword_8_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCommaKeyword_8_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class BasicComponent_RequiredRolesAssignment_8_3_1 extends AssignmentToken  {
+	
+	public BasicComponent_RequiredRolesAssignment_8_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRequiredRolesAssignment_8_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_CommaKeyword_8_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BasicComponent_RightCurlyBracketKeyword_8_4 extends KeywordToken  {
+	
+	public BasicComponent_RightCurlyBracketKeyword_8_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_8_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+protected class BasicComponent_Group_9 extends GroupToken {
+	
+	public BasicComponent_Group_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightCurlyBracketKeyword_9_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "coarseGrainedBehavior"
+protected class BasicComponent_CoarseGrainedBehaviorKeyword_9_0 extends KeywordToken  {
+	
+	public BasicComponent_CoarseGrainedBehaviorKeyword_9_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorKeyword_9_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_8(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_Group_7(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BasicComponent_Group_6(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new BasicComponent_Group_5(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 4, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BasicComponent_LeftCurlyBracketKeyword_9_1 extends KeywordToken  {
+	
+	public BasicComponent_LeftCurlyBracketKeyword_9_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_9_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_CoarseGrainedBehaviorKeyword_9_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class BasicComponent_CoarseGrainedBehaviorAssignment_9_2 extends AssignmentToken  {
+	
+	public BasicComponent_CoarseGrainedBehaviorAssignment_9_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorAssignment_9_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_LeftCurlyBracketKeyword_9_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+protected class BasicComponent_Group_9_3 extends GroupToken {
+	
+	public BasicComponent_Group_9_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_9_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_CoarseGrainedBehaviorAssignment_9_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BasicComponent_CommaKeyword_9_3_0 extends KeywordToken  {
+	
+	public BasicComponent_CommaKeyword_9_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCommaKeyword_9_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class BasicComponent_CoarseGrainedBehaviorAssignment_9_3_1 extends AssignmentToken  {
+	
+	public BasicComponent_CoarseGrainedBehaviorAssignment_9_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorAssignment_9_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_CommaKeyword_9_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BasicComponent_RightCurlyBracketKeyword_9_4 extends KeywordToken  {
+	
+	public BasicComponent_RightCurlyBracketKeyword_9_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_9_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("passiveResources" "{" passiveResources+=PassiveResourceSpecification (","
+// passiveResources+=PassiveResourceSpecification)* "}")?
+protected class BasicComponent_Group_10 extends GroupToken {
+	
+	public BasicComponent_Group_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightCurlyBracketKeyword_10_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "passiveResources"
+protected class BasicComponent_PassiveResourcesKeyword_10_0 extends KeywordToken  {
+	
+	public BasicComponent_PassiveResourcesKeyword_10_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getPassiveResourcesKeyword_10_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_9(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_Group_8(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BasicComponent_Group_7(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new BasicComponent_Group_6(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new BasicComponent_Group_5(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 5, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BasicComponent_LeftCurlyBracketKeyword_10_1 extends KeywordToken  {
+	
+	public BasicComponent_LeftCurlyBracketKeyword_10_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_10_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_PassiveResourcesKeyword_10_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// passiveResources+=PassiveResourceSpecification
+protected class BasicComponent_PassiveResourcesAssignment_10_2 extends AssignmentToken  {
+	
+	public BasicComponent_PassiveResourcesAssignment_10_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getPassiveResourcesAssignment_10_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("passiveResources",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("passiveResources");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getPassiveResourceSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_LeftCurlyBracketKeyword_10_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," passiveResources+=PassiveResourceSpecification)*
+protected class BasicComponent_Group_10_3 extends GroupToken {
+	
+	public BasicComponent_Group_10_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_10_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_PassiveResourcesAssignment_10_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BasicComponent_CommaKeyword_10_3_0 extends KeywordToken  {
+	
+	public BasicComponent_CommaKeyword_10_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCommaKeyword_10_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_10_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_PassiveResourcesAssignment_10_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// passiveResources+=PassiveResourceSpecification
+protected class BasicComponent_PassiveResourcesAssignment_10_3_1 extends AssignmentToken  {
+	
+	public BasicComponent_PassiveResourcesAssignment_10_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getPassiveResourcesAssignment_10_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("passiveResources",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("passiveResources");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getPassiveResourceSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_CommaKeyword_10_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BasicComponent_RightCurlyBracketKeyword_10_4 extends KeywordToken  {
+	
+	public BasicComponent_RightCurlyBracketKeyword_10_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_10_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_10_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_PassiveResourcesAssignment_10_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("fineGrainedBehavior" "{" fineGrainedBehavior+=FineGrainedBehavior ("," fineGrainedBehavior+=FineGrainedBehavior)*
+// "}")?
+protected class BasicComponent_Group_11 extends GroupToken {
+	
+	public BasicComponent_Group_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_RightCurlyBracketKeyword_11_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "fineGrainedBehavior"
+protected class BasicComponent_FineGrainedBehaviorKeyword_11_0 extends KeywordToken  {
+	
+	public BasicComponent_FineGrainedBehaviorKeyword_11_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorKeyword_11_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_10(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_Group_9(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BasicComponent_Group_8(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new BasicComponent_Group_7(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new BasicComponent_Group_6(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new BasicComponent_Group_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 6, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BasicComponent_LeftCurlyBracketKeyword_11_1 extends KeywordToken  {
+	
+	public BasicComponent_LeftCurlyBracketKeyword_11_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_11_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_FineGrainedBehaviorKeyword_11_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// fineGrainedBehavior+=FineGrainedBehavior
+protected class BasicComponent_FineGrainedBehaviorAssignment_11_2 extends AssignmentToken  {
+	
+	public BasicComponent_FineGrainedBehaviorAssignment_11_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorAssignment_11_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("fineGrainedBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("fineGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getFineGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_LeftCurlyBracketKeyword_11_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," fineGrainedBehavior+=FineGrainedBehavior)*
+protected class BasicComponent_Group_11_3 extends GroupToken {
+	
+	public BasicComponent_Group_11_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getGroup_11_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_FineGrainedBehaviorAssignment_11_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BasicComponent_CommaKeyword_11_3_0 extends KeywordToken  {
+	
+	public BasicComponent_CommaKeyword_11_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getCommaKeyword_11_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_11_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_FineGrainedBehaviorAssignment_11_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// fineGrainedBehavior+=FineGrainedBehavior
+protected class BasicComponent_FineGrainedBehaviorAssignment_11_3_1 extends AssignmentToken  {
+	
+	public BasicComponent_FineGrainedBehaviorAssignment_11_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorAssignment_11_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("fineGrainedBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("fineGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getFineGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BasicComponent_CommaKeyword_11_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BasicComponent_RightCurlyBracketKeyword_11_4 extends KeywordToken  {
+	
+	public BasicComponent_RightCurlyBracketKeyword_11_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_11_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_11_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_FineGrainedBehaviorAssignment_11_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class BasicComponent_RightCurlyBracketKeyword_12 extends KeywordToken  {
+	
+	public BasicComponent_RightCurlyBracketKeyword_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BasicComponent_Group_11(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BasicComponent_Group_10(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BasicComponent_Group_9(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new BasicComponent_Group_8(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new BasicComponent_Group_7(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new BasicComponent_Group_6(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new BasicComponent_Group_5(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new BasicComponent_NameAssignment_4(lastRuleCallOrigin, this, 7, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BasicComponent ****************/
+
+
+/************ begin Rule CompositeComponent ****************
+ *
+ * CompositeComponent returns repository::CompositeComponent:
+ * 	"CompositeComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+ * 	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+ * 	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+ * 	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+ * 	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+ * 	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+ * 	assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+ * 	assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+ * 	providedDelegationConnectors+=ProvidedDelegationConnector (","
+ * 	providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+ * 	requiredDelegationConnectors+=RequiredDelegationConnector (","
+ * 	requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}";
+ *
+ **/
+
+// "CompositeComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+// relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+// providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+// blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+// requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+// assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+// assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+// providedDelegationConnectors+=ProvidedDelegationConnector (","
+// providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+// requiredDelegationConnectors+=RequiredDelegationConnector (","
+// requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}"
+protected class CompositeComponent_Group extends GroupToken {
+	
+	public CompositeComponent_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_14(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCompositeComponentRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CompositeComponent"
+protected class CompositeComponent_CompositeComponentKeyword_0 extends KeywordToken  {
+	
+	public CompositeComponent_CompositeComponentKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCompositeComponentKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class CompositeComponent_IdAssignment_1 extends AssignmentToken  {
+	
+	public CompositeComponent_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_CompositeComponentKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCompositeComponentAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCompositeComponentAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class CompositeComponent_NameKeyword_3 extends KeywordToken  {
+	
+	public CompositeComponent_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class CompositeComponent_NameAssignment_4 extends AssignmentToken  {
+	
+	public CompositeComponent_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCompositeComponentAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCompositeComponentAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+protected class CompositeComponent_Group_5 extends GroupToken {
+	
+	public CompositeComponent_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightParenthesisKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "relationship"
+protected class CompositeComponent_RelationshipKeyword_5_0 extends KeywordToken  {
+	
+	public CompositeComponent_RelationshipKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRelationshipKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "("
+protected class CompositeComponent_LeftParenthesisKeyword_5_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftParenthesisKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftParenthesisKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RelationshipKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class CompositeComponent_RelationshipAssignment_5_2 extends AssignmentToken  {
+	
+	public CompositeComponent_RelationshipAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRelationshipAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_LeftParenthesisKeyword_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_2_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_2_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("," relationship+=[Relationship|EString])*
+protected class CompositeComponent_Group_5_3 extends GroupToken {
+	
+	public CompositeComponent_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RelationshipAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class CompositeComponent_RelationshipAssignment_5_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_RelationshipAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRelationshipAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_5_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ")"
+protected class CompositeComponent_RightParenthesisKeyword_5_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightParenthesisKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightParenthesisKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+protected class CompositeComponent_Group_6 extends GroupToken {
+	
+	public CompositeComponent_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "providedRoles"
+protected class CompositeComponent_ProvidedRolesKeyword_6_0 extends KeywordToken  {
+	
+	public CompositeComponent_ProvidedRolesKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getProvidedRolesKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_ProvidedRolesKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class CompositeComponent_ProvidedRolesAssignment_6_2 extends AssignmentToken  {
+	
+	public CompositeComponent_ProvidedRolesAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getProvidedRolesAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," providedRoles+=ProvidedRole)*
+protected class CompositeComponent_Group_6_3 extends GroupToken {
+	
+	public CompositeComponent_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_ProvidedRolesAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class CompositeComponent_ProvidedRolesAssignment_6_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_ProvidedRolesAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getProvidedRolesAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+protected class CompositeComponent_Group_7 extends GroupToken {
+	
+	public CompositeComponent_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "blackBoxBehavior"
+protected class CompositeComponent_BlackBoxBehaviorKeyword_7_0 extends KeywordToken  {
+	
+	public CompositeComponent_BlackBoxBehaviorKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorKeyword_7_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_7_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_7_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_BlackBoxBehaviorKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class CompositeComponent_BlackBoxBehaviorAssignment_7_2 extends AssignmentToken  {
+	
+	public CompositeComponent_BlackBoxBehaviorAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorAssignment_7_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," blackBoxBehavior+=BlackBoxBehavior)*
+protected class CompositeComponent_Group_7_3 extends GroupToken {
+	
+	public CompositeComponent_Group_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_7_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_BlackBoxBehaviorAssignment_7_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_7_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_7_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_7_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class CompositeComponent_BlackBoxBehaviorAssignment_7_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_BlackBoxBehaviorAssignment_7_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorAssignment_7_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_7_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_7_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_7_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+protected class CompositeComponent_Group_8 extends GroupToken {
+	
+	public CompositeComponent_Group_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_8_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "requiredRoles"
+protected class CompositeComponent_RequiredRolesKeyword_8_0 extends KeywordToken  {
+	
+	public CompositeComponent_RequiredRolesKeyword_8_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRequiredRolesKeyword_8_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_7(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_8_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_8_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_8_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RequiredRolesKeyword_8_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class CompositeComponent_RequiredRolesAssignment_8_2 extends AssignmentToken  {
+	
+	public CompositeComponent_RequiredRolesAssignment_8_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRequiredRolesAssignment_8_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_8_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," requiredRoles+=RequiredRole)*
+protected class CompositeComponent_Group_8_3 extends GroupToken {
+	
+	public CompositeComponent_Group_8_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_8_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RequiredRolesAssignment_8_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_8_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_8_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_8_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class CompositeComponent_RequiredRolesAssignment_8_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_RequiredRolesAssignment_8_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRequiredRolesAssignment_8_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_8_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_8_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_8_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_8_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+protected class CompositeComponent_Group_9 extends GroupToken {
+	
+	public CompositeComponent_Group_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_9_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "coarseGrainedBehavior"
+protected class CompositeComponent_CoarseGrainedBehaviorKeyword_9_0 extends KeywordToken  {
+	
+	public CompositeComponent_CoarseGrainedBehaviorKeyword_9_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorKeyword_9_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_8(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_7(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 4, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_9_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_9_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_9_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_CoarseGrainedBehaviorKeyword_9_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class CompositeComponent_CoarseGrainedBehaviorAssignment_9_2 extends AssignmentToken  {
+	
+	public CompositeComponent_CoarseGrainedBehaviorAssignment_9_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorAssignment_9_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_9_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+protected class CompositeComponent_Group_9_3 extends GroupToken {
+	
+	public CompositeComponent_Group_9_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_9_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_CoarseGrainedBehaviorAssignment_9_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_9_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_9_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_9_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class CompositeComponent_CoarseGrainedBehaviorAssignment_9_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_CoarseGrainedBehaviorAssignment_9_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorAssignment_9_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_9_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_9_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_9_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_9_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("assemblyContexts" "{" assemblyContexts+=AssemblyContext ("," assemblyContexts+=AssemblyContext)* "}")?
+protected class CompositeComponent_Group_10 extends GroupToken {
+	
+	public CompositeComponent_Group_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_10_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "assemblyContexts"
+protected class CompositeComponent_AssemblyContextsKeyword_10_0 extends KeywordToken  {
+	
+	public CompositeComponent_AssemblyContextsKeyword_10_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getAssemblyContextsKeyword_10_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_9(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_8(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_Group_7(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 5, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_10_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_10_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_10_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_AssemblyContextsKeyword_10_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyContexts+=AssemblyContext
+protected class CompositeComponent_AssemblyContextsAssignment_10_2 extends AssignmentToken  {
+	
+	public CompositeComponent_AssemblyContextsAssignment_10_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssignment_10_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyContexts",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyContexts");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyContextRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_10_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," assemblyContexts+=AssemblyContext)*
+protected class CompositeComponent_Group_10_3 extends GroupToken {
+	
+	public CompositeComponent_Group_10_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_10_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_AssemblyContextsAssignment_10_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_10_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_10_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_10_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_10_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_AssemblyContextsAssignment_10_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyContexts+=AssemblyContext
+protected class CompositeComponent_AssemblyContextsAssignment_10_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_AssemblyContextsAssignment_10_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssignment_10_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyContexts",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyContexts");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyContextRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_10_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_10_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_10_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_10_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_10_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_AssemblyContextsAssignment_10_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector ("," assemblyConnectors+=AssemblyConnector)* "}")?
+protected class CompositeComponent_Group_11 extends GroupToken {
+	
+	public CompositeComponent_Group_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_11_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "assemblyConnectors"
+protected class CompositeComponent_AssemblyConnectorsKeyword_11_0 extends KeywordToken  {
+	
+	public CompositeComponent_AssemblyConnectorsKeyword_11_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsKeyword_11_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_10(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_9(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_Group_8(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CompositeComponent_Group_7(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 6, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_11_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_11_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_11_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_AssemblyConnectorsKeyword_11_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyConnectors+=AssemblyConnector
+protected class CompositeComponent_AssemblyConnectorsAssignment_11_2 extends AssignmentToken  {
+	
+	public CompositeComponent_AssemblyConnectorsAssignment_11_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssignment_11_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyConnectors",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_11_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," assemblyConnectors+=AssemblyConnector)*
+protected class CompositeComponent_Group_11_3 extends GroupToken {
+	
+	public CompositeComponent_Group_11_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_11_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_AssemblyConnectorsAssignment_11_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_11_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_11_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_11_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_11_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_AssemblyConnectorsAssignment_11_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyConnectors+=AssemblyConnector
+protected class CompositeComponent_AssemblyConnectorsAssignment_11_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_AssemblyConnectorsAssignment_11_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssignment_11_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyConnectors",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_11_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_11_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_11_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_11_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_11_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_AssemblyConnectorsAssignment_11_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("providedDelegationConnectors" "{" providedDelegationConnectors+=ProvidedDelegationConnector (","
+// providedDelegationConnectors+=ProvidedDelegationConnector)* "}")?
+protected class CompositeComponent_Group_12 extends GroupToken {
+	
+	public CompositeComponent_Group_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_12_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "providedDelegationConnectors"
+protected class CompositeComponent_ProvidedDelegationConnectorsKeyword_12_0 extends KeywordToken  {
+	
+	public CompositeComponent_ProvidedDelegationConnectorsKeyword_12_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsKeyword_12_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_11(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_10(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_Group_9(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CompositeComponent_Group_8(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new CompositeComponent_Group_7(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 7, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_12_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_12_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_12_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_ProvidedDelegationConnectorsKeyword_12_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedDelegationConnectors+=ProvidedDelegationConnector
+protected class CompositeComponent_ProvidedDelegationConnectorsAssignment_12_2 extends AssignmentToken  {
+	
+	public CompositeComponent_ProvidedDelegationConnectorsAssignment_12_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsAssignment_12_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedDelegationConnectors",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_12_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," providedDelegationConnectors+=ProvidedDelegationConnector)*
+protected class CompositeComponent_Group_12_3 extends GroupToken {
+	
+	public CompositeComponent_Group_12_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_12_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_ProvidedDelegationConnectorsAssignment_12_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_12_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_12_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_12_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_12_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_ProvidedDelegationConnectorsAssignment_12_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedDelegationConnectors+=ProvidedDelegationConnector
+protected class CompositeComponent_ProvidedDelegationConnectorsAssignment_12_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_ProvidedDelegationConnectorsAssignment_12_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsAssignment_12_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedDelegationConnectors",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_12_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_12_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_12_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_12_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_12_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_ProvidedDelegationConnectorsAssignment_12_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("requiredDelegationConnectors" "{" requiredDelegationConnectors+=RequiredDelegationConnector (","
+// requiredDelegationConnectors+=RequiredDelegationConnector)* "}")?
+protected class CompositeComponent_Group_13 extends GroupToken {
+	
+	public CompositeComponent_Group_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RightCurlyBracketKeyword_13_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "requiredDelegationConnectors"
+protected class CompositeComponent_RequiredDelegationConnectorsKeyword_13_0 extends KeywordToken  {
+	
+	public CompositeComponent_RequiredDelegationConnectorsKeyword_13_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsKeyword_13_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_12(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_11(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_Group_10(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CompositeComponent_Group_9(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new CompositeComponent_Group_8(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new CompositeComponent_Group_7(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 8, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class CompositeComponent_LeftCurlyBracketKeyword_13_1 extends KeywordToken  {
+	
+	public CompositeComponent_LeftCurlyBracketKeyword_13_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_13_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RequiredDelegationConnectorsKeyword_13_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredDelegationConnectors+=RequiredDelegationConnector
+protected class CompositeComponent_RequiredDelegationConnectorsAssignment_13_2 extends AssignmentToken  {
+	
+	public CompositeComponent_RequiredDelegationConnectorsAssignment_13_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsAssignment_13_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredDelegationConnectors",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_LeftCurlyBracketKeyword_13_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," requiredDelegationConnectors+=RequiredDelegationConnector)*
+protected class CompositeComponent_Group_13_3 extends GroupToken {
+	
+	public CompositeComponent_Group_13_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getGroup_13_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_RequiredDelegationConnectorsAssignment_13_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class CompositeComponent_CommaKeyword_13_3_0 extends KeywordToken  {
+	
+	public CompositeComponent_CommaKeyword_13_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getCommaKeyword_13_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_13_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_RequiredDelegationConnectorsAssignment_13_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredDelegationConnectors+=RequiredDelegationConnector
+protected class CompositeComponent_RequiredDelegationConnectorsAssignment_13_3_1 extends AssignmentToken  {
+	
+	public CompositeComponent_RequiredDelegationConnectorsAssignment_13_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsAssignment_13_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredDelegationConnectors",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CompositeComponent_CommaKeyword_13_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_13_4 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_13_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_13_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_13_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_RequiredDelegationConnectorsAssignment_13_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class CompositeComponent_RightCurlyBracketKeyword_14 extends KeywordToken  {
+	
+	public CompositeComponent_RightCurlyBracketKeyword_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CompositeComponent_Group_13(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new CompositeComponent_Group_12(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new CompositeComponent_Group_11(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new CompositeComponent_Group_10(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new CompositeComponent_Group_9(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new CompositeComponent_Group_8(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new CompositeComponent_Group_7(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new CompositeComponent_Group_6(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new CompositeComponent_Group_5(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new CompositeComponent_NameAssignment_4(lastRuleCallOrigin, this, 9, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CompositeComponent ****************/
+
+
+/************ begin Rule SubSystem ****************
+ *
+ * SubSystem returns repository::SubSystem:
+ * 	"SubSystem" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+ * 	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+ * 	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+ * 	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+ * 	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+ * 	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+ * 	assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+ * 	assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+ * 	providedDelegationConnectors+=ProvidedDelegationConnector (","
+ * 	providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+ * 	requiredDelegationConnectors+=RequiredDelegationConnector (","
+ * 	requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}";
+ *
+ **/
+
+// "SubSystem" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+// relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+// providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+// blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+// requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+// assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+// assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+// providedDelegationConnectors+=ProvidedDelegationConnector (","
+// providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+// requiredDelegationConnectors+=RequiredDelegationConnector (","
+// requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}"
+protected class SubSystem_Group extends GroupToken {
+	
+	public SubSystem_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_14(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSubSystemRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "SubSystem"
+protected class SubSystem_SubSystemKeyword_0 extends KeywordToken  {
+	
+	public SubSystem_SubSystemKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getSubSystemKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class SubSystem_IdAssignment_1 extends AssignmentToken  {
+	
+	public SubSystem_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_SubSystemKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSubSystemAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getSubSystemAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class SubSystem_NameKeyword_3 extends KeywordToken  {
+	
+	public SubSystem_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class SubSystem_NameAssignment_4 extends AssignmentToken  {
+	
+	public SubSystem_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSubSystemAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getSubSystemAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+protected class SubSystem_Group_5 extends GroupToken {
+	
+	public SubSystem_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightParenthesisKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "relationship"
+protected class SubSystem_RelationshipKeyword_5_0 extends KeywordToken  {
+	
+	public SubSystem_RelationshipKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRelationshipKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "("
+protected class SubSystem_LeftParenthesisKeyword_5_1 extends KeywordToken  {
+	
+	public SubSystem_LeftParenthesisKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftParenthesisKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RelationshipKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class SubSystem_RelationshipAssignment_5_2 extends AssignmentToken  {
+	
+	public SubSystem_RelationshipAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRelationshipAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_LeftParenthesisKeyword_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_2_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_2_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("," relationship+=[Relationship|EString])*
+protected class SubSystem_Group_5_3 extends GroupToken {
+	
+	public SubSystem_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RelationshipAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// relationship+=[Relationship|EString]
+protected class SubSystem_RelationshipAssignment_5_3_1 extends AssignmentToken  {
+	
+	public SubSystem_RelationshipAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRelationshipAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_5_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("relationship",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("relationship");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ")"
+protected class SubSystem_RightParenthesisKeyword_5_4 extends KeywordToken  {
+	
+	public SubSystem_RightParenthesisKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightParenthesisKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_RelationshipAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+protected class SubSystem_Group_6 extends GroupToken {
+	
+	public SubSystem_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "providedRoles"
+protected class SubSystem_ProvidedRolesKeyword_6_0 extends KeywordToken  {
+	
+	public SubSystem_ProvidedRolesKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getProvidedRolesKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_ProvidedRolesKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class SubSystem_ProvidedRolesAssignment_6_2 extends AssignmentToken  {
+	
+	public SubSystem_ProvidedRolesAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getProvidedRolesAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," providedRoles+=ProvidedRole)*
+protected class SubSystem_Group_6_3 extends GroupToken {
+	
+	public SubSystem_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_ProvidedRolesAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRoles+=ProvidedRole
+protected class SubSystem_ProvidedRolesAssignment_6_3_1 extends AssignmentToken  {
+	
+	public SubSystem_ProvidedRolesAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getProvidedRolesAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_ProvidedRolesAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+protected class SubSystem_Group_7 extends GroupToken {
+	
+	public SubSystem_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "blackBoxBehavior"
+protected class SubSystem_BlackBoxBehaviorKeyword_7_0 extends KeywordToken  {
+	
+	public SubSystem_BlackBoxBehaviorKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getBlackBoxBehaviorKeyword_7_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_7_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_7_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_BlackBoxBehaviorKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class SubSystem_BlackBoxBehaviorAssignment_7_2 extends AssignmentToken  {
+	
+	public SubSystem_BlackBoxBehaviorAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getBlackBoxBehaviorAssignment_7_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," blackBoxBehavior+=BlackBoxBehavior)*
+protected class SubSystem_Group_7_3 extends GroupToken {
+	
+	public SubSystem_Group_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_7_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_BlackBoxBehaviorAssignment_7_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_7_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_7_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_7_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// blackBoxBehavior+=BlackBoxBehavior
+protected class SubSystem_BlackBoxBehaviorAssignment_7_3_1 extends AssignmentToken  {
+	
+	public SubSystem_BlackBoxBehaviorAssignment_7_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getBlackBoxBehaviorAssignment_7_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BlackBoxBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("blackBoxBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("blackBoxBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBlackBoxBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_7_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_7_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_7_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_BlackBoxBehaviorAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+protected class SubSystem_Group_8 extends GroupToken {
+	
+	public SubSystem_Group_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_8_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "requiredRoles"
+protected class SubSystem_RequiredRolesKeyword_8_0 extends KeywordToken  {
+	
+	public SubSystem_RequiredRolesKeyword_8_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRequiredRolesKeyword_8_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_7(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_6(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_Group_5(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_8_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_8_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_8_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RequiredRolesKeyword_8_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class SubSystem_RequiredRolesAssignment_8_2 extends AssignmentToken  {
+	
+	public SubSystem_RequiredRolesAssignment_8_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRequiredRolesAssignment_8_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_8_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," requiredRoles+=RequiredRole)*
+protected class SubSystem_Group_8_3 extends GroupToken {
+	
+	public SubSystem_Group_8_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_8_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RequiredRolesAssignment_8_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_8_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_8_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_8_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRoles+=RequiredRole
+protected class SubSystem_RequiredRolesAssignment_8_3_1 extends AssignmentToken  {
+	
+	public SubSystem_RequiredRolesAssignment_8_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRequiredRolesAssignment_8_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredRole_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRoles",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRoles");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredRoleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_8_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_8_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_8_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_8_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_8_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_RequiredRolesAssignment_8_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+// coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+protected class SubSystem_Group_9 extends GroupToken {
+	
+	public SubSystem_Group_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_9_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "coarseGrainedBehavior"
+protected class SubSystem_CoarseGrainedBehaviorKeyword_9_0 extends KeywordToken  {
+	
+	public SubSystem_CoarseGrainedBehaviorKeyword_9_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorKeyword_9_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_8(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_7(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_Group_6(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new SubSystem_Group_5(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 4, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_9_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_9_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_9_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_CoarseGrainedBehaviorKeyword_9_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class SubSystem_CoarseGrainedBehaviorAssignment_9_2 extends AssignmentToken  {
+	
+	public SubSystem_CoarseGrainedBehaviorAssignment_9_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorAssignment_9_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_9_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+protected class SubSystem_Group_9_3 extends GroupToken {
+	
+	public SubSystem_Group_9_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_9_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_CoarseGrainedBehaviorAssignment_9_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_9_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_9_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_9_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// coarseGrainedBehavior+=CoarseGrainedBehavior
+protected class SubSystem_CoarseGrainedBehaviorAssignment_9_3_1 extends AssignmentToken  {
+	
+	public SubSystem_CoarseGrainedBehaviorAssignment_9_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorAssignment_9_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CoarseGrainedBehavior_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("coarseGrainedBehavior",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("coarseGrainedBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCoarseGrainedBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_9_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_9_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_9_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_9_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_9_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_CoarseGrainedBehaviorAssignment_9_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("assemblyContexts" "{" assemblyContexts+=AssemblyContext ("," assemblyContexts+=AssemblyContext)* "}")?
+protected class SubSystem_Group_10 extends GroupToken {
+	
+	public SubSystem_Group_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_10_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "assemblyContexts"
+protected class SubSystem_AssemblyContextsKeyword_10_0 extends KeywordToken  {
+	
+	public SubSystem_AssemblyContextsKeyword_10_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getAssemblyContextsKeyword_10_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_9(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_8(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_Group_7(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new SubSystem_Group_6(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new SubSystem_Group_5(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 5, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_10_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_10_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_10_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_AssemblyContextsKeyword_10_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyContexts+=AssemblyContext
+protected class SubSystem_AssemblyContextsAssignment_10_2 extends AssignmentToken  {
+	
+	public SubSystem_AssemblyContextsAssignment_10_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getAssemblyContextsAssignment_10_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyContexts",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyContexts");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyContextRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_10_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," assemblyContexts+=AssemblyContext)*
+protected class SubSystem_Group_10_3 extends GroupToken {
+	
+	public SubSystem_Group_10_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_10_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_AssemblyContextsAssignment_10_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_10_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_10_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_10_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_10_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_AssemblyContextsAssignment_10_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyContexts+=AssemblyContext
+protected class SubSystem_AssemblyContextsAssignment_10_3_1 extends AssignmentToken  {
+	
+	public SubSystem_AssemblyContextsAssignment_10_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getAssemblyContextsAssignment_10_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyContexts",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyContexts");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyContextRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_10_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_10_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_10_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_10_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_10_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_AssemblyContextsAssignment_10_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector ("," assemblyConnectors+=AssemblyConnector)* "}")?
+protected class SubSystem_Group_11 extends GroupToken {
+	
+	public SubSystem_Group_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_11_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "assemblyConnectors"
+protected class SubSystem_AssemblyConnectorsKeyword_11_0 extends KeywordToken  {
+	
+	public SubSystem_AssemblyConnectorsKeyword_11_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getAssemblyConnectorsKeyword_11_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_10(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_9(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_Group_8(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new SubSystem_Group_7(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new SubSystem_Group_6(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new SubSystem_Group_5(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 6, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_11_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_11_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_11_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_AssemblyConnectorsKeyword_11_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyConnectors+=AssemblyConnector
+protected class SubSystem_AssemblyConnectorsAssignment_11_2 extends AssignmentToken  {
+	
+	public SubSystem_AssemblyConnectorsAssignment_11_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssignment_11_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyConnectors",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_11_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," assemblyConnectors+=AssemblyConnector)*
+protected class SubSystem_Group_11_3 extends GroupToken {
+	
+	public SubSystem_Group_11_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_11_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_AssemblyConnectorsAssignment_11_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_11_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_11_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_11_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_11_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_AssemblyConnectorsAssignment_11_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyConnectors+=AssemblyConnector
+protected class SubSystem_AssemblyConnectorsAssignment_11_3_1 extends AssignmentToken  {
+	
+	public SubSystem_AssemblyConnectorsAssignment_11_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssignment_11_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyConnectors",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_11_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_11_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_11_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_11_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_11_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_AssemblyConnectorsAssignment_11_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("providedDelegationConnectors" "{" providedDelegationConnectors+=ProvidedDelegationConnector (","
+// providedDelegationConnectors+=ProvidedDelegationConnector)* "}")?
+protected class SubSystem_Group_12 extends GroupToken {
+	
+	public SubSystem_Group_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_12_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "providedDelegationConnectors"
+protected class SubSystem_ProvidedDelegationConnectorsKeyword_12_0 extends KeywordToken  {
+	
+	public SubSystem_ProvidedDelegationConnectorsKeyword_12_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsKeyword_12_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_11(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_10(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_Group_9(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new SubSystem_Group_8(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new SubSystem_Group_7(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new SubSystem_Group_6(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new SubSystem_Group_5(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 7, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_12_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_12_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_12_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_ProvidedDelegationConnectorsKeyword_12_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedDelegationConnectors+=ProvidedDelegationConnector
+protected class SubSystem_ProvidedDelegationConnectorsAssignment_12_2 extends AssignmentToken  {
+	
+	public SubSystem_ProvidedDelegationConnectorsAssignment_12_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsAssignment_12_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedDelegationConnectors",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_12_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," providedDelegationConnectors+=ProvidedDelegationConnector)*
+protected class SubSystem_Group_12_3 extends GroupToken {
+	
+	public SubSystem_Group_12_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_12_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_ProvidedDelegationConnectorsAssignment_12_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_12_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_12_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_12_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_12_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_ProvidedDelegationConnectorsAssignment_12_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedDelegationConnectors+=ProvidedDelegationConnector
+protected class SubSystem_ProvidedDelegationConnectorsAssignment_12_3_1 extends AssignmentToken  {
+	
+	public SubSystem_ProvidedDelegationConnectorsAssignment_12_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsAssignment_12_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedDelegationConnectors",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_12_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_12_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_12_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_12_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_12_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_ProvidedDelegationConnectorsAssignment_12_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("requiredDelegationConnectors" "{" requiredDelegationConnectors+=RequiredDelegationConnector (","
+// requiredDelegationConnectors+=RequiredDelegationConnector)* "}")?
+protected class SubSystem_Group_13 extends GroupToken {
+	
+	public SubSystem_Group_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RightCurlyBracketKeyword_13_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "requiredDelegationConnectors"
+protected class SubSystem_RequiredDelegationConnectorsKeyword_13_0 extends KeywordToken  {
+	
+	public SubSystem_RequiredDelegationConnectorsKeyword_13_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsKeyword_13_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_12(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_11(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_Group_10(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new SubSystem_Group_9(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new SubSystem_Group_8(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new SubSystem_Group_7(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new SubSystem_Group_6(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new SubSystem_Group_5(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 8, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class SubSystem_LeftCurlyBracketKeyword_13_1 extends KeywordToken  {
+	
+	public SubSystem_LeftCurlyBracketKeyword_13_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_13_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RequiredDelegationConnectorsKeyword_13_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredDelegationConnectors+=RequiredDelegationConnector
+protected class SubSystem_RequiredDelegationConnectorsAssignment_13_2 extends AssignmentToken  {
+	
+	public SubSystem_RequiredDelegationConnectorsAssignment_13_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsAssignment_13_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredDelegationConnectors",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_LeftCurlyBracketKeyword_13_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," requiredDelegationConnectors+=RequiredDelegationConnector)*
+protected class SubSystem_Group_13_3 extends GroupToken {
+	
+	public SubSystem_Group_13_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getGroup_13_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_RequiredDelegationConnectorsAssignment_13_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class SubSystem_CommaKeyword_13_3_0 extends KeywordToken  {
+	
+	public SubSystem_CommaKeyword_13_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getCommaKeyword_13_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_13_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_RequiredDelegationConnectorsAssignment_13_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredDelegationConnectors+=RequiredDelegationConnector
+protected class SubSystem_RequiredDelegationConnectorsAssignment_13_3_1 extends AssignmentToken  {
+	
+	public SubSystem_RequiredDelegationConnectorsAssignment_13_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsAssignment_13_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredDelegationConnectors",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredDelegationConnectors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredDelegationConnectorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new SubSystem_CommaKeyword_13_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_13_4 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_13_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_13_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_13_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_RequiredDelegationConnectorsAssignment_13_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class SubSystem_RightCurlyBracketKeyword_14 extends KeywordToken  {
+	
+	public SubSystem_RightCurlyBracketKeyword_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new SubSystem_Group_13(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new SubSystem_Group_12(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new SubSystem_Group_11(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new SubSystem_Group_10(lastRuleCallOrigin, this, 3, inst);
+			case 4: return new SubSystem_Group_9(lastRuleCallOrigin, this, 4, inst);
+			case 5: return new SubSystem_Group_8(lastRuleCallOrigin, this, 5, inst);
+			case 6: return new SubSystem_Group_7(lastRuleCallOrigin, this, 6, inst);
+			case 7: return new SubSystem_Group_6(lastRuleCallOrigin, this, 7, inst);
+			case 8: return new SubSystem_Group_5(lastRuleCallOrigin, this, 8, inst);
+			case 9: return new SubSystem_NameAssignment_4(lastRuleCallOrigin, this, 9, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule SubSystem ****************/
+
+
+/************ begin Rule InfluencingParameter_Impl ****************
+ *
+ * InfluencingParameter_Impl returns InfluencingParameter:
+ * 	"InfluencingParameter" name=EString "{" "description" description=EString "behavior"
+ * 	behavior=[servicebehavior::ServiceBehaviorAbstraction|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+ * 	"}";
+ *
+ **/
+
+// "InfluencingParameter" name=EString "{" "description" description=EString "behavior"
+// behavior=[servicebehavior::ServiceBehaviorAbstraction|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+protected class InfluencingParameter_Impl_Group extends GroupToken {
+	
+	public InfluencingParameter_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getInfluencingParameter_ImplRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "InfluencingParameter"
+protected class InfluencingParameter_Impl_InfluencingParameterKeyword_0 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_InfluencingParameterKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getInfluencingParameterKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// name=EString
+protected class InfluencingParameter_Impl_NameAssignment_1 extends AssignmentToken  {
+	
+	public InfluencingParameter_Impl_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getNameAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_InfluencingParameterKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInfluencingParameter_ImplAccess().getNameEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getInfluencingParameter_ImplAccess().getNameEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class InfluencingParameter_Impl_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "description"
+protected class InfluencingParameter_Impl_DescriptionKeyword_3 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_DescriptionKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// description=EString
+protected class InfluencingParameter_Impl_DescriptionAssignment_4 extends AssignmentToken  {
+	
+	public InfluencingParameter_Impl_DescriptionAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_DescriptionKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("description",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("description");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "behavior"
+protected class InfluencingParameter_Impl_BehaviorKeyword_5 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_BehaviorKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_DescriptionAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+protected class InfluencingParameter_Impl_BehaviorAssignment_6 extends AssignmentToken  {
+	
+	public InfluencingParameter_Impl_BehaviorAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_BehaviorKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("behavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("behavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorServiceBehaviorAbstractionCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorServiceBehaviorAbstractionCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+protected class InfluencingParameter_Impl_Group_7 extends GroupToken {
+	
+	public InfluencingParameter_Impl_Group_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getGroup_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_RightCurlyBracketKeyword_7_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "scope"
+protected class InfluencingParameter_Impl_ScopeKeyword_7_0 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_ScopeKeyword_7_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getScopeKeyword_7_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_BehaviorAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class InfluencingParameter_Impl_LeftCurlyBracketKeyword_7_1 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_LeftCurlyBracketKeyword_7_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getLeftCurlyBracketKeyword_7_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_ScopeKeyword_7_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class InfluencingParameter_Impl_ScopeAssignment_7_2 extends AssignmentToken  {
+	
+	public InfluencingParameter_Impl_ScopeAssignment_7_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getScopeAssignment_7_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getInfluencingParameter_ImplAccess().getScopeScopeParserRuleCall_7_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_LeftCurlyBracketKeyword_7_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," scope+=Scope)*
+protected class InfluencingParameter_Impl_Group_7_3 extends GroupToken {
+	
+	public InfluencingParameter_Impl_Group_7_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getGroup_7_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_ScopeAssignment_7_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class InfluencingParameter_Impl_CommaKeyword_7_3_0 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_CommaKeyword_7_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getCommaKeyword_7_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InfluencingParameter_Impl_ScopeAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class InfluencingParameter_Impl_ScopeAssignment_7_3_1 extends AssignmentToken  {
+	
+	public InfluencingParameter_Impl_ScopeAssignment_7_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getScopeAssignment_7_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getInfluencingParameter_ImplAccess().getScopeScopeParserRuleCall_7_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_CommaKeyword_7_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class InfluencingParameter_Impl_RightCurlyBracketKeyword_7_4 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_RightCurlyBracketKeyword_7_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getRightCurlyBracketKeyword_7_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_Group_7_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InfluencingParameter_Impl_ScopeAssignment_7_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class InfluencingParameter_Impl_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public InfluencingParameter_Impl_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencingParameter_ImplAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Impl_Group_7(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InfluencingParameter_Impl_BehaviorAssignment_6(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule InfluencingParameter_Impl ****************/
+
+
+/************ begin Rule ResponseTimeSpecification ****************
+ *
+ * ResponseTimeSpecification returns servicebehavior::ResponseTimeSpecification:
+ * 	{servicebehavior::ResponseTimeSpecification} "ResponseTimeSpecification";
+ *
+ **/
+
+// {servicebehavior::ResponseTimeSpecification} "ResponseTimeSpecification"
+protected class ResponseTimeSpecification_Group extends GroupToken {
+	
+	public ResponseTimeSpecification_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getResponseTimeSpecificationAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResponseTimeSpecification_ResponseTimeSpecificationKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getResponseTimeSpecificationAccess().getResponseTimeSpecificationAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {servicebehavior::ResponseTimeSpecification}
+protected class ResponseTimeSpecification_ResponseTimeSpecificationAction_0 extends ActionToken  {
+
+	public ResponseTimeSpecification_ResponseTimeSpecificationAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getResponseTimeSpecificationAccess().getResponseTimeSpecificationAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ResponseTimeSpecification"
+protected class ResponseTimeSpecification_ResponseTimeSpecificationKeyword_1 extends KeywordToken  {
+	
+	public ResponseTimeSpecification_ResponseTimeSpecificationKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getResponseTimeSpecificationAccess().getResponseTimeSpecificationKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResponseTimeSpecification_ResponseTimeSpecificationAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ResponseTimeSpecification ****************/
+
+
+/************ begin Rule Scope ****************
+ *
+ * Scope:
+ * 	"Scope" "{" "interfaceProvidingRequiringEntity"
+ * 	interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString] "}";
+ *
+ **/
+
+// "Scope" "{" "interfaceProvidingRequiringEntity"
+// interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString] "}"
+protected class Scope_Group extends GroupToken {
+	
+	public Scope_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getScopeAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getScopeRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Scope"
+protected class Scope_ScopeKeyword_0 extends KeywordToken  {
+	
+	public Scope_ScopeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getScopeAccess().getScopeKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class Scope_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public Scope_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getScopeAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_ScopeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "interfaceProvidingRequiringEntity"
+protected class Scope_InterfaceProvidingRequiringEntityKeyword_2 extends KeywordToken  {
+	
+	public Scope_InterfaceProvidingRequiringEntityKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+protected class Scope_InterfaceProvidingRequiringEntityAssignment_3 extends AssignmentToken  {
+	
+	public Scope_InterfaceProvidingRequiringEntityAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_InterfaceProvidingRequiringEntityKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("interfaceProvidingRequiringEntity",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("interfaceProvidingRequiringEntity");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class Scope_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public Scope_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getScopeAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_InterfaceProvidingRequiringEntityAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Scope ****************/
+
+
+/************ begin Rule ServiceInputParameter ****************
+ *
+ * ServiceInputParameter:
+ * 	"ServiceInputParameter" name=EString "{" "description" description=EString "characterization"
+ * 	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+ * 	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+ * 	("returnType" returnType=[repository::DataType|EString])? "providedRole"
+ * 	providedRole=[repository::ProvidedRole|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+ *
+ **/
+
+// "ServiceInputParameter" name=EString "{" "description" description=EString "characterization"
+// characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+// "signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+// ("returnType" returnType=[repository::DataType|EString])? "providedRole"
+// providedRole=[repository::ProvidedRole|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+protected class ServiceInputParameter_Group extends GroupToken {
+	
+	public ServiceInputParameter_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_RightCurlyBracketKeyword_16(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getServiceInputParameterRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ServiceInputParameter"
+protected class ServiceInputParameter_ServiceInputParameterKeyword_0 extends KeywordToken  {
+	
+	public ServiceInputParameter_ServiceInputParameterKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getServiceInputParameterKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// name=EString
+protected class ServiceInputParameter_NameAssignment_1 extends AssignmentToken  {
+	
+	public ServiceInputParameter_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getNameAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ServiceInputParameterKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getServiceInputParameterAccess().getNameEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getServiceInputParameterAccess().getNameEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class ServiceInputParameter_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ServiceInputParameter_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "description"
+protected class ServiceInputParameter_DescriptionKeyword_3 extends KeywordToken  {
+	
+	public ServiceInputParameter_DescriptionKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getDescriptionKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// description=EString
+protected class ServiceInputParameter_DescriptionAssignment_4 extends AssignmentToken  {
+	
+	public ServiceInputParameter_DescriptionAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getDescriptionAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_DescriptionKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("description",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("description");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getServiceInputParameterAccess().getDescriptionEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getServiceInputParameterAccess().getDescriptionEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "characterization"
+protected class ServiceInputParameter_CharacterizationKeyword_5 extends KeywordToken  {
+	
+	public ServiceInputParameter_CharacterizationKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getCharacterizationKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_DescriptionAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// characterization=CharacterizationType
+protected class ServiceInputParameter_CharacterizationAssignment_6 extends AssignmentToken  {
+	
+	public ServiceInputParameter_CharacterizationAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getCharacterizationAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_CharacterizationKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("characterization",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("characterization");
+		if(enumLitSerializer.isValid(obj.getEObject(), grammarAccess.getServiceInputParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0(), value, null)) { 
+			type = AssignmentType.ENUM_RULE_CALL;
+			element = grammarAccess.getServiceInputParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "behavior"
+protected class ServiceInputParameter_BehaviorKeyword_7 extends KeywordToken  {
+	
+	public ServiceInputParameter_BehaviorKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getBehaviorKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_CharacterizationAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+protected class ServiceInputParameter_BehaviorAssignment_8 extends AssignmentToken  {
+	
+	public ServiceInputParameter_BehaviorAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getBehaviorAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_BehaviorKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("behavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("behavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getServiceInputParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getServiceInputParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "signature"
+protected class ServiceInputParameter_SignatureKeyword_9 extends KeywordToken  {
+	
+	public ServiceInputParameter_SignatureKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getSignatureKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_BehaviorAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// signature=[repository::Signature|EString]
+protected class ServiceInputParameter_SignatureAssignment_10 extends AssignmentToken  {
+	
+	public ServiceInputParameter_SignatureAssignment_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getSignatureAssignment_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_SignatureKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("signature",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("signature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getServiceInputParameterAccess().getSignatureSignatureCrossReference_10_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getServiceInputParameterAccess().getSignatureSignatureCrossReference_10_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("parameter" parameter=[repository::Parameter|EString])?
+protected class ServiceInputParameter_Group_11 extends GroupToken {
+	
+	public ServiceInputParameter_Group_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getGroup_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ParameterAssignment_11_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "parameter"
+protected class ServiceInputParameter_ParameterKeyword_11_0 extends KeywordToken  {
+	
+	public ServiceInputParameter_ParameterKeyword_11_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getParameterKeyword_11_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parameter=[repository::Parameter|EString]
+protected class ServiceInputParameter_ParameterAssignment_11_1 extends AssignmentToken  {
+	
+	public ServiceInputParameter_ParameterAssignment_11_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getParameterAssignment_11_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ParameterKeyword_11_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parameter",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getServiceInputParameterAccess().getParameterParameterCrossReference_11_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getServiceInputParameterAccess().getParameterParameterCrossReference_11_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("returnType" returnType=[repository::DataType|EString])?
+protected class ServiceInputParameter_Group_12 extends GroupToken {
+	
+	public ServiceInputParameter_Group_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getGroup_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ReturnTypeAssignment_12_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "returnType"
+protected class ServiceInputParameter_ReturnTypeKeyword_12_0 extends KeywordToken  {
+	
+	public ServiceInputParameter_ReturnTypeKeyword_12_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getReturnTypeKeyword_12_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_Group_11(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ServiceInputParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// returnType=[repository::DataType|EString]
+protected class ServiceInputParameter_ReturnTypeAssignment_12_1 extends AssignmentToken  {
+	
+	public ServiceInputParameter_ReturnTypeAssignment_12_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getReturnTypeAssignment_12_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ReturnTypeKeyword_12_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("returnType",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("returnType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getServiceInputParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getServiceInputParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "providedRole"
+protected class ServiceInputParameter_ProvidedRoleKeyword_13 extends KeywordToken  {
+	
+	public ServiceInputParameter_ProvidedRoleKeyword_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getProvidedRoleKeyword_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_Group_12(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ServiceInputParameter_Group_11(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ServiceInputParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRole=[repository::ProvidedRole|EString]
+protected class ServiceInputParameter_ProvidedRoleAssignment_14 extends AssignmentToken  {
+	
+	public ServiceInputParameter_ProvidedRoleAssignment_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getProvidedRoleAssignment_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ProvidedRoleKeyword_13(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getServiceInputParameterAccess().getProvidedRoleProvidedRoleCrossReference_14_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getServiceInputParameterAccess().getProvidedRoleProvidedRoleCrossReference_14_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+protected class ServiceInputParameter_Group_15 extends GroupToken {
+	
+	public ServiceInputParameter_Group_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getGroup_15();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_RightCurlyBracketKeyword_15_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "scope"
+protected class ServiceInputParameter_ScopeKeyword_15_0 extends KeywordToken  {
+	
+	public ServiceInputParameter_ScopeKeyword_15_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getScopeKeyword_15_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ProvidedRoleAssignment_14(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ServiceInputParameter_LeftCurlyBracketKeyword_15_1 extends KeywordToken  {
+	
+	public ServiceInputParameter_LeftCurlyBracketKeyword_15_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getLeftCurlyBracketKeyword_15_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ScopeKeyword_15_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class ServiceInputParameter_ScopeAssignment_15_2 extends AssignmentToken  {
+	
+	public ServiceInputParameter_ScopeAssignment_15_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getScopeAssignment_15_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getServiceInputParameterAccess().getScopeScopeParserRuleCall_15_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ServiceInputParameter_LeftCurlyBracketKeyword_15_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," scope+=Scope)*
+protected class ServiceInputParameter_Group_15_3 extends GroupToken {
+	
+	public ServiceInputParameter_Group_15_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getGroup_15_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_ScopeAssignment_15_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ServiceInputParameter_CommaKeyword_15_3_0 extends KeywordToken  {
+	
+	public ServiceInputParameter_CommaKeyword_15_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getCommaKeyword_15_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_Group_15_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ServiceInputParameter_ScopeAssignment_15_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class ServiceInputParameter_ScopeAssignment_15_3_1 extends AssignmentToken  {
+	
+	public ServiceInputParameter_ScopeAssignment_15_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getScopeAssignment_15_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getServiceInputParameterAccess().getScopeScopeParserRuleCall_15_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ServiceInputParameter_CommaKeyword_15_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ServiceInputParameter_RightCurlyBracketKeyword_15_4 extends KeywordToken  {
+	
+	public ServiceInputParameter_RightCurlyBracketKeyword_15_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getRightCurlyBracketKeyword_15_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_Group_15_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ServiceInputParameter_ScopeAssignment_15_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ServiceInputParameter_RightCurlyBracketKeyword_16 extends KeywordToken  {
+	
+	public ServiceInputParameter_RightCurlyBracketKeyword_16(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getServiceInputParameterAccess().getRightCurlyBracketKeyword_16();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ServiceInputParameter_Group_15(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ServiceInputParameter_ProvidedRoleAssignment_14(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ServiceInputParameter ****************/
+
+
+/************ begin Rule ExternalCallReturnParameter ****************
+ *
+ * ExternalCallReturnParameter:
+ * 	"ExternalCallReturnParameter" name=EString "{" "description" description=EString "characterization"
+ * 	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+ * 	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+ * 	("returnType" returnType=[repository::DataType|EString])? "externalCall"
+ * 	externalCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+ *
+ **/
+
+// "ExternalCallReturnParameter" name=EString "{" "description" description=EString "characterization"
+// characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+// "signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+// ("returnType" returnType=[repository::DataType|EString])? "externalCall"
+// externalCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+protected class ExternalCallReturnParameter_Group extends GroupToken {
+	
+	public ExternalCallReturnParameter_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_RightCurlyBracketKeyword_16(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallReturnParameterRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ExternalCallReturnParameter"
+protected class ExternalCallReturnParameter_ExternalCallReturnParameterKeyword_0 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_ExternalCallReturnParameterKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getExternalCallReturnParameterKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// name=EString
+protected class ExternalCallReturnParameter_NameAssignment_1 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getNameAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ExternalCallReturnParameterKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExternalCallReturnParameterAccess().getNameEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getExternalCallReturnParameterAccess().getNameEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class ExternalCallReturnParameter_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "description"
+protected class ExternalCallReturnParameter_DescriptionKeyword_3 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_DescriptionKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getDescriptionKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// description=EString
+protected class ExternalCallReturnParameter_DescriptionAssignment_4 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_DescriptionAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getDescriptionAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_DescriptionKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("description",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("description");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExternalCallReturnParameterAccess().getDescriptionEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getExternalCallReturnParameterAccess().getDescriptionEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "characterization"
+protected class ExternalCallReturnParameter_CharacterizationKeyword_5 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_CharacterizationKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_DescriptionAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// characterization=CharacterizationType
+protected class ExternalCallReturnParameter_CharacterizationAssignment_6 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_CharacterizationAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_CharacterizationKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("characterization",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("characterization");
+		if(enumLitSerializer.isValid(obj.getEObject(), grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0(), value, null)) { 
+			type = AssignmentType.ENUM_RULE_CALL;
+			element = grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "behavior"
+protected class ExternalCallReturnParameter_BehaviorKeyword_7 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_BehaviorKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getBehaviorKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_CharacterizationAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+protected class ExternalCallReturnParameter_BehaviorAssignment_8 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_BehaviorAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getBehaviorAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_BehaviorKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("behavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("behavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallReturnParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallReturnParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "signature"
+protected class ExternalCallReturnParameter_SignatureKeyword_9 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_SignatureKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getSignatureKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_BehaviorAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// signature=[repository::Signature|EString]
+protected class ExternalCallReturnParameter_SignatureAssignment_10 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_SignatureAssignment_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getSignatureAssignment_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_SignatureKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("signature",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("signature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallReturnParameterAccess().getSignatureSignatureCrossReference_10_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallReturnParameterAccess().getSignatureSignatureCrossReference_10_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("parameter" parameter=[repository::Parameter|EString])?
+protected class ExternalCallReturnParameter_Group_11 extends GroupToken {
+	
+	public ExternalCallReturnParameter_Group_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getGroup_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ParameterAssignment_11_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "parameter"
+protected class ExternalCallReturnParameter_ParameterKeyword_11_0 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_ParameterKeyword_11_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getParameterKeyword_11_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parameter=[repository::Parameter|EString]
+protected class ExternalCallReturnParameter_ParameterAssignment_11_1 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_ParameterAssignment_11_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getParameterAssignment_11_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ParameterKeyword_11_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parameter",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallReturnParameterAccess().getParameterParameterCrossReference_11_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallReturnParameterAccess().getParameterParameterCrossReference_11_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("returnType" returnType=[repository::DataType|EString])?
+protected class ExternalCallReturnParameter_Group_12 extends GroupToken {
+	
+	public ExternalCallReturnParameter_Group_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getGroup_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ReturnTypeAssignment_12_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "returnType"
+protected class ExternalCallReturnParameter_ReturnTypeKeyword_12_0 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_ReturnTypeKeyword_12_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeKeyword_12_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_Group_11(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallReturnParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// returnType=[repository::DataType|EString]
+protected class ExternalCallReturnParameter_ReturnTypeAssignment_12_1 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_ReturnTypeAssignment_12_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeAssignment_12_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ReturnTypeKeyword_12_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("returnType",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("returnType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "externalCall"
+protected class ExternalCallReturnParameter_ExternalCallKeyword_13 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_ExternalCallKeyword_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getExternalCallKeyword_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_Group_12(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallReturnParameter_Group_11(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ExternalCallReturnParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// externalCall=[servicebehavior::ExternalCall|EString]
+protected class ExternalCallReturnParameter_ExternalCallAssignment_14 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_ExternalCallAssignment_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getExternalCallAssignment_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ExternalCallKeyword_13(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("externalCall",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("externalCall");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallReturnParameterAccess().getExternalCallExternalCallCrossReference_14_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallReturnParameterAccess().getExternalCallExternalCallCrossReference_14_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+protected class ExternalCallReturnParameter_Group_15 extends GroupToken {
+	
+	public ExternalCallReturnParameter_Group_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getGroup_15();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_RightCurlyBracketKeyword_15_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "scope"
+protected class ExternalCallReturnParameter_ScopeKeyword_15_0 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_ScopeKeyword_15_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getScopeKeyword_15_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ExternalCallAssignment_14(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ExternalCallReturnParameter_LeftCurlyBracketKeyword_15_1 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_LeftCurlyBracketKeyword_15_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getLeftCurlyBracketKeyword_15_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ScopeKeyword_15_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class ExternalCallReturnParameter_ScopeAssignment_15_2 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_ScopeAssignment_15_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getScopeAssignment_15_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getExternalCallReturnParameterAccess().getScopeScopeParserRuleCall_15_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_LeftCurlyBracketKeyword_15_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," scope+=Scope)*
+protected class ExternalCallReturnParameter_Group_15_3 extends GroupToken {
+	
+	public ExternalCallReturnParameter_Group_15_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getGroup_15_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_ScopeAssignment_15_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ExternalCallReturnParameter_CommaKeyword_15_3_0 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_CommaKeyword_15_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getCommaKeyword_15_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_Group_15_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallReturnParameter_ScopeAssignment_15_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class ExternalCallReturnParameter_ScopeAssignment_15_3_1 extends AssignmentToken  {
+	
+	public ExternalCallReturnParameter_ScopeAssignment_15_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getScopeAssignment_15_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getExternalCallReturnParameterAccess().getScopeScopeParserRuleCall_15_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_CommaKeyword_15_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ExternalCallReturnParameter_RightCurlyBracketKeyword_15_4 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_RightCurlyBracketKeyword_15_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getRightCurlyBracketKeyword_15_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_Group_15_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallReturnParameter_ScopeAssignment_15_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ExternalCallReturnParameter_RightCurlyBracketKeyword_16 extends KeywordToken  {
+	
+	public ExternalCallReturnParameter_RightCurlyBracketKeyword_16(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallReturnParameterAccess().getRightCurlyBracketKeyword_16();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallReturnParameter_Group_15(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallReturnParameter_ExternalCallAssignment_14(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExternalCallReturnParameter ****************/
+
+
+/************ begin Rule ExternalCallParameter ****************
+ *
+ * ExternalCallParameter:
+ * 	"ExternalCallParameter" name=EString "{" "description" description=EString "characterization"
+ * 	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+ * 	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+ * 	("returnType" returnType=[repository::DataType|EString])? "externallCall"
+ * 	externallCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+ *
+ **/
+
+// "ExternalCallParameter" name=EString "{" "description" description=EString "characterization"
+// characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+// "signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+// ("returnType" returnType=[repository::DataType|EString])? "externallCall"
+// externallCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+protected class ExternalCallParameter_Group extends GroupToken {
+	
+	public ExternalCallParameter_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_RightCurlyBracketKeyword_16(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallParameterRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ExternalCallParameter"
+protected class ExternalCallParameter_ExternalCallParameterKeyword_0 extends KeywordToken  {
+	
+	public ExternalCallParameter_ExternalCallParameterKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getExternalCallParameterKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// name=EString
+protected class ExternalCallParameter_NameAssignment_1 extends AssignmentToken  {
+	
+	public ExternalCallParameter_NameAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getNameAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ExternalCallParameterKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExternalCallParameterAccess().getNameEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getExternalCallParameterAccess().getNameEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class ExternalCallParameter_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ExternalCallParameter_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_NameAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "description"
+protected class ExternalCallParameter_DescriptionKeyword_3 extends KeywordToken  {
+	
+	public ExternalCallParameter_DescriptionKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getDescriptionKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// description=EString
+protected class ExternalCallParameter_DescriptionAssignment_4 extends AssignmentToken  {
+	
+	public ExternalCallParameter_DescriptionAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getDescriptionAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_DescriptionKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("description",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("description");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExternalCallParameterAccess().getDescriptionEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getExternalCallParameterAccess().getDescriptionEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "characterization"
+protected class ExternalCallParameter_CharacterizationKeyword_5 extends KeywordToken  {
+	
+	public ExternalCallParameter_CharacterizationKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getCharacterizationKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_DescriptionAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// characterization=CharacterizationType
+protected class ExternalCallParameter_CharacterizationAssignment_6 extends AssignmentToken  {
+	
+	public ExternalCallParameter_CharacterizationAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getCharacterizationAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_CharacterizationKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("characterization",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("characterization");
+		if(enumLitSerializer.isValid(obj.getEObject(), grammarAccess.getExternalCallParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0(), value, null)) { 
+			type = AssignmentType.ENUM_RULE_CALL;
+			element = grammarAccess.getExternalCallParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "behavior"
+protected class ExternalCallParameter_BehaviorKeyword_7 extends KeywordToken  {
+	
+	public ExternalCallParameter_BehaviorKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getBehaviorKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_CharacterizationAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+protected class ExternalCallParameter_BehaviorAssignment_8 extends AssignmentToken  {
+	
+	public ExternalCallParameter_BehaviorAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getBehaviorAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_BehaviorKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("behavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("behavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "signature"
+protected class ExternalCallParameter_SignatureKeyword_9 extends KeywordToken  {
+	
+	public ExternalCallParameter_SignatureKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getSignatureKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_BehaviorAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// signature=[repository::Signature|EString]
+protected class ExternalCallParameter_SignatureAssignment_10 extends AssignmentToken  {
+	
+	public ExternalCallParameter_SignatureAssignment_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getSignatureAssignment_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_SignatureKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("signature",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("signature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallParameterAccess().getSignatureSignatureCrossReference_10_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallParameterAccess().getSignatureSignatureCrossReference_10_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("parameter" parameter=[repository::Parameter|EString])?
+protected class ExternalCallParameter_Group_11 extends GroupToken {
+	
+	public ExternalCallParameter_Group_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getGroup_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ParameterAssignment_11_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "parameter"
+protected class ExternalCallParameter_ParameterKeyword_11_0 extends KeywordToken  {
+	
+	public ExternalCallParameter_ParameterKeyword_11_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getParameterKeyword_11_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// parameter=[repository::Parameter|EString]
+protected class ExternalCallParameter_ParameterAssignment_11_1 extends AssignmentToken  {
+	
+	public ExternalCallParameter_ParameterAssignment_11_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getParameterAssignment_11_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ParameterKeyword_11_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("parameter",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("parameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallParameterAccess().getParameterParameterCrossReference_11_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallParameterAccess().getParameterParameterCrossReference_11_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("returnType" returnType=[repository::DataType|EString])?
+protected class ExternalCallParameter_Group_12 extends GroupToken {
+	
+	public ExternalCallParameter_Group_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getGroup_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ReturnTypeAssignment_12_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "returnType"
+protected class ExternalCallParameter_ReturnTypeKeyword_12_0 extends KeywordToken  {
+	
+	public ExternalCallParameter_ReturnTypeKeyword_12_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getReturnTypeKeyword_12_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_Group_11(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// returnType=[repository::DataType|EString]
+protected class ExternalCallParameter_ReturnTypeAssignment_12_1 extends AssignmentToken  {
+	
+	public ExternalCallParameter_ReturnTypeAssignment_12_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getReturnTypeAssignment_12_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ReturnTypeKeyword_12_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("returnType",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("returnType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "externallCall"
+protected class ExternalCallParameter_ExternallCallKeyword_13 extends KeywordToken  {
+	
+	public ExternalCallParameter_ExternallCallKeyword_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getExternallCallKeyword_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_Group_12(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallParameter_Group_11(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ExternalCallParameter_SignatureAssignment_10(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// externallCall=[servicebehavior::ExternalCall|EString]
+protected class ExternalCallParameter_ExternallCallAssignment_14 extends AssignmentToken  {
+	
+	public ExternalCallParameter_ExternallCallAssignment_14(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getExternallCallAssignment_14();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ExternallCallKeyword_13(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("externallCall",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("externallCall");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallParameterAccess().getExternallCallExternalCallCrossReference_14_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallParameterAccess().getExternallCallExternalCallCrossReference_14_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+protected class ExternalCallParameter_Group_15 extends GroupToken {
+	
+	public ExternalCallParameter_Group_15(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getGroup_15();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_RightCurlyBracketKeyword_15_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "scope"
+protected class ExternalCallParameter_ScopeKeyword_15_0 extends KeywordToken  {
+	
+	public ExternalCallParameter_ScopeKeyword_15_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getScopeKeyword_15_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ExternallCallAssignment_14(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ExternalCallParameter_LeftCurlyBracketKeyword_15_1 extends KeywordToken  {
+	
+	public ExternalCallParameter_LeftCurlyBracketKeyword_15_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getLeftCurlyBracketKeyword_15_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ScopeKeyword_15_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class ExternalCallParameter_ScopeAssignment_15_2 extends AssignmentToken  {
+	
+	public ExternalCallParameter_ScopeAssignment_15_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getScopeAssignment_15_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getExternalCallParameterAccess().getScopeScopeParserRuleCall_15_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ExternalCallParameter_LeftCurlyBracketKeyword_15_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," scope+=Scope)*
+protected class ExternalCallParameter_Group_15_3 extends GroupToken {
+	
+	public ExternalCallParameter_Group_15_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getGroup_15_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_ScopeAssignment_15_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ExternalCallParameter_CommaKeyword_15_3_0 extends KeywordToken  {
+	
+	public ExternalCallParameter_CommaKeyword_15_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getCommaKeyword_15_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_Group_15_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallParameter_ScopeAssignment_15_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// scope+=Scope
+protected class ExternalCallParameter_ScopeAssignment_15_3_1 extends AssignmentToken  {
+	
+	public ExternalCallParameter_ScopeAssignment_15_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getScopeAssignment_15_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Scope_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("scope",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("scope");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getScopeRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getExternalCallParameterAccess().getScopeScopeParserRuleCall_15_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ExternalCallParameter_CommaKeyword_15_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ExternalCallParameter_RightCurlyBracketKeyword_15_4 extends KeywordToken  {
+	
+	public ExternalCallParameter_RightCurlyBracketKeyword_15_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getRightCurlyBracketKeyword_15_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_Group_15_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallParameter_ScopeAssignment_15_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ExternalCallParameter_RightCurlyBracketKeyword_16 extends KeywordToken  {
+	
+	public ExternalCallParameter_RightCurlyBracketKeyword_16(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallParameterAccess().getRightCurlyBracketKeyword_16();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallParameter_Group_15(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallParameter_ExternallCallAssignment_14(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExternalCallParameter ****************/
+
+
+/************ begin Rule FineGrainedBehavior ****************
+ *
+ * FineGrainedBehavior returns servicebehavior::FineGrainedBehavior:
+ * 	"FineGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "basicComponent"
+ * 	basicComponent=[repository::BasicComponent|EString] ("influencingParameter" "{"
+ * 	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")? ("actions" "{"
+ * 	actions+=AbstractAction ("," actions+=AbstractAction)* "}")? "behavior" behavior=ComponentInternalBehavior "}";
+ *
+ **/
+
+// "FineGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "basicComponent"
+// basicComponent=[repository::BasicComponent|EString] ("influencingParameter" "{"
+// influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")? ("actions" "{"
+// actions+=AbstractAction ("," actions+=AbstractAction)* "}")? "behavior" behavior=ComponentInternalBehavior "}"
+protected class FineGrainedBehavior_Group extends GroupToken {
+	
+	public FineGrainedBehavior_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_RightCurlyBracketKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getFineGrainedBehaviorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "FineGrainedBehavior"
+protected class FineGrainedBehavior_FineGrainedBehaviorKeyword_0 extends KeywordToken  {
+	
+	public FineGrainedBehavior_FineGrainedBehaviorKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getFineGrainedBehaviorKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class FineGrainedBehavior_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public FineGrainedBehavior_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_FineGrainedBehaviorKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("describedSignature" describedSignature=[repository::Signature|EString])?
+protected class FineGrainedBehavior_Group_2 extends GroupToken {
+	
+	public FineGrainedBehavior_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_DescribedSignatureAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "describedSignature"
+protected class FineGrainedBehavior_DescribedSignatureKeyword_2_0 extends KeywordToken  {
+	
+	public FineGrainedBehavior_DescribedSignatureKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// describedSignature=[repository::Signature|EString]
+protected class FineGrainedBehavior_DescribedSignatureAssignment_2_1 extends AssignmentToken  {
+	
+	public FineGrainedBehavior_DescribedSignatureAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_DescribedSignatureKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("describedSignature",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("describedSignature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "basicComponent"
+protected class FineGrainedBehavior_BasicComponentKeyword_3 extends KeywordToken  {
+	
+	public FineGrainedBehavior_BasicComponentKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new FineGrainedBehavior_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// basicComponent=[repository::BasicComponent|EString]
+protected class FineGrainedBehavior_BasicComponentAssignment_4 extends AssignmentToken  {
+	
+	public FineGrainedBehavior_BasicComponentAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_BasicComponentKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("basicComponent",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("basicComponent");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentBasicComponentCrossReference_4_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentBasicComponentCrossReference_4_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("influencingParameter" "{" influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)*
+// "}")?
+protected class FineGrainedBehavior_Group_5 extends GroupToken {
+	
+	public FineGrainedBehavior_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_RightCurlyBracketKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "influencingParameter"
+protected class FineGrainedBehavior_InfluencingParameterKeyword_5_0 extends KeywordToken  {
+	
+	public FineGrainedBehavior_InfluencingParameterKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_BasicComponentAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class FineGrainedBehavior_LeftCurlyBracketKeyword_5_1 extends KeywordToken  {
+	
+	public FineGrainedBehavior_LeftCurlyBracketKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_InfluencingParameterKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencingParameter+=InfluencingParameter
+protected class FineGrainedBehavior_InfluencingParameterAssignment_5_2 extends AssignmentToken  {
+	
+	public FineGrainedBehavior_InfluencingParameterAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencingParameter",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencingParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new FineGrainedBehavior_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," influencingParameter+=InfluencingParameter)*
+protected class FineGrainedBehavior_Group_5_3 extends GroupToken {
+	
+	public FineGrainedBehavior_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_InfluencingParameterAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class FineGrainedBehavior_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public FineGrainedBehavior_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new FineGrainedBehavior_InfluencingParameterAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencingParameter+=InfluencingParameter
+protected class FineGrainedBehavior_InfluencingParameterAssignment_5_3_1 extends AssignmentToken  {
+	
+	public FineGrainedBehavior_InfluencingParameterAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencingParameter_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencingParameter",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencingParameterRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new FineGrainedBehavior_CommaKeyword_5_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class FineGrainedBehavior_RightCurlyBracketKeyword_5_4 extends KeywordToken  {
+	
+	public FineGrainedBehavior_RightCurlyBracketKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new FineGrainedBehavior_InfluencingParameterAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// ("actions" "{" actions+=AbstractAction ("," actions+=AbstractAction)* "}")?
+protected class FineGrainedBehavior_Group_6 extends GroupToken {
+	
+	public FineGrainedBehavior_Group_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getGroup_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_RightCurlyBracketKeyword_6_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "actions"
+protected class FineGrainedBehavior_ActionsKeyword_6_0 extends KeywordToken  {
+	
+	public FineGrainedBehavior_ActionsKeyword_6_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getActionsKeyword_6_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new FineGrainedBehavior_BasicComponentAssignment_4(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class FineGrainedBehavior_LeftCurlyBracketKeyword_6_1 extends KeywordToken  {
+	
+	public FineGrainedBehavior_LeftCurlyBracketKeyword_6_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_6_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_ActionsKeyword_6_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// actions+=AbstractAction
+protected class FineGrainedBehavior_ActionsAssignment_6_2 extends AssignmentToken  {
+	
+	public FineGrainedBehavior_ActionsAssignment_6_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getActionsAssignment_6_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("actions",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actions");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAbstractActionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getFineGrainedBehaviorAccess().getActionsAbstractActionParserRuleCall_6_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new FineGrainedBehavior_LeftCurlyBracketKeyword_6_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," actions+=AbstractAction)*
+protected class FineGrainedBehavior_Group_6_3 extends GroupToken {
+	
+	public FineGrainedBehavior_Group_6_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getGroup_6_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_ActionsAssignment_6_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class FineGrainedBehavior_CommaKeyword_6_3_0 extends KeywordToken  {
+	
+	public FineGrainedBehavior_CommaKeyword_6_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getCommaKeyword_6_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new FineGrainedBehavior_ActionsAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// actions+=AbstractAction
+protected class FineGrainedBehavior_ActionsAssignment_6_3_1 extends AssignmentToken  {
+	
+	public FineGrainedBehavior_ActionsAssignment_6_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getActionsAssignment_6_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("actions",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actions");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAbstractActionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getFineGrainedBehaviorAccess().getActionsAbstractActionParserRuleCall_6_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new FineGrainedBehavior_CommaKeyword_6_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class FineGrainedBehavior_RightCurlyBracketKeyword_6_4 extends KeywordToken  {
+	
+	public FineGrainedBehavior_RightCurlyBracketKeyword_6_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_6_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group_6_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new FineGrainedBehavior_ActionsAssignment_6_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "behavior"
+protected class FineGrainedBehavior_BehaviorKeyword_7 extends KeywordToken  {
+	
+	public FineGrainedBehavior_BehaviorKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getBehaviorKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_Group_6(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new FineGrainedBehavior_Group_5(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new FineGrainedBehavior_BasicComponentAssignment_4(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// behavior=ComponentInternalBehavior
+protected class FineGrainedBehavior_BehaviorAssignment_8 extends AssignmentToken  {
+	
+	public FineGrainedBehavior_BehaviorAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getBehaviorAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("behavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("behavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInternalBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getFineGrainedBehaviorAccess().getBehaviorComponentInternalBehaviorParserRuleCall_8_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new FineGrainedBehavior_BehaviorKeyword_7(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class FineGrainedBehavior_RightCurlyBracketKeyword_9 extends KeywordToken  {
+	
+	public FineGrainedBehavior_RightCurlyBracketKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new FineGrainedBehavior_BehaviorAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule FineGrainedBehavior ****************/
+
+
+/************ begin Rule AbstractAction_Impl ****************
+ *
+ * AbstractAction_Impl returns servicebehavior::AbstractAction:
+ * 	{servicebehavior::AbstractAction} "AbstractAction" "{" ("predecessor"
+ * 	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? "}";
+ *
+ **/
+
+// {servicebehavior::AbstractAction} "AbstractAction" "{" ("predecessor"
+// predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? "}"
+protected class AbstractAction_Impl_Group extends GroupToken {
+	
+	public AbstractAction_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getAbstractAction_ImplAccess().getAbstractActionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {servicebehavior::AbstractAction}
+protected class AbstractAction_Impl_AbstractActionAction_0 extends ActionToken  {
+
+	public AbstractAction_Impl_AbstractActionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getAbstractActionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "AbstractAction"
+protected class AbstractAction_Impl_AbstractActionKeyword_1 extends KeywordToken  {
+	
+	public AbstractAction_Impl_AbstractActionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getAbstractActionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_AbstractActionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class AbstractAction_Impl_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public AbstractAction_Impl_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_AbstractActionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class AbstractAction_Impl_Group_3 extends GroupToken {
+	
+	public AbstractAction_Impl_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_PredecessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class AbstractAction_Impl_PredecessorKeyword_3_0 extends KeywordToken  {
+	
+	public AbstractAction_Impl_PredecessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getPredecessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class AbstractAction_Impl_PredecessorAssignment_3_1 extends AssignmentToken  {
+	
+	public AbstractAction_Impl_PredecessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getPredecessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_PredecessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAbstractAction_ImplAccess().getPredecessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAbstractAction_ImplAccess().getPredecessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class AbstractAction_Impl_Group_4 extends GroupToken {
+	
+	public AbstractAction_Impl_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_SuccessorAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class AbstractAction_Impl_SuccessorKeyword_4_0 extends KeywordToken  {
+	
+	public AbstractAction_Impl_SuccessorKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getSuccessorKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new AbstractAction_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class AbstractAction_Impl_SuccessorAssignment_4_1 extends AssignmentToken  {
+	
+	public AbstractAction_Impl_SuccessorAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getSuccessorAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_SuccessorKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAbstractAction_ImplAccess().getSuccessorAbstractActionCrossReference_4_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAbstractAction_ImplAccess().getSuccessorAbstractActionCrossReference_4_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "}"
+protected class AbstractAction_Impl_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public AbstractAction_Impl_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAbstractAction_ImplAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Impl_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new AbstractAction_Impl_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new AbstractAction_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule AbstractAction_Impl ****************/
+
+
+/************ begin Rule ComponentInternalBehavior_Impl ****************
+ *
+ * ComponentInternalBehavior_Impl returns servicebehavior::ComponentInternalBehavior:
+ * 	{servicebehavior::ComponentInternalBehavior} "ComponentInternalBehavior" "{" ("actions" "{" actions+=AbstractAction
+ * 	("," actions+=AbstractAction)* "}")? "}";
+ *
+ **/
+
+// {servicebehavior::ComponentInternalBehavior} "ComponentInternalBehavior" "{" ("actions" "{" actions+=AbstractAction (","
+// actions+=AbstractAction)* "}")? "}"
+protected class ComponentInternalBehavior_Impl_Group extends GroupToken {
+	
+	public ComponentInternalBehavior_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {servicebehavior::ComponentInternalBehavior}
+protected class ComponentInternalBehavior_Impl_ComponentInternalBehaviorAction_0 extends ActionToken  {
+
+	public ComponentInternalBehavior_Impl_ComponentInternalBehaviorAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ComponentInternalBehavior"
+protected class ComponentInternalBehavior_Impl_ComponentInternalBehaviorKeyword_1 extends KeywordToken  {
+	
+	public ComponentInternalBehavior_Impl_ComponentInternalBehaviorKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_ComponentInternalBehaviorAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ComponentInternalBehavior_Impl_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ComponentInternalBehavior_Impl_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_ComponentInternalBehaviorKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("actions" "{" actions+=AbstractAction ("," actions+=AbstractAction)* "}")?
+protected class ComponentInternalBehavior_Impl_Group_3 extends GroupToken {
+	
+	public ComponentInternalBehavior_Impl_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_RightCurlyBracketKeyword_3_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "actions"
+protected class ComponentInternalBehavior_Impl_ActionsKeyword_3_0 extends KeywordToken  {
+	
+	public ComponentInternalBehavior_Impl_ActionsKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ComponentInternalBehavior_Impl_LeftCurlyBracketKeyword_3_1 extends KeywordToken  {
+	
+	public ComponentInternalBehavior_Impl_LeftCurlyBracketKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getLeftCurlyBracketKeyword_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_ActionsKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// actions+=AbstractAction
+protected class ComponentInternalBehavior_Impl_ActionsAssignment_3_2 extends AssignmentToken  {
+	
+	public ComponentInternalBehavior_Impl_ActionsAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("actions",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actions");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAbstractActionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAbstractActionParserRuleCall_3_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_LeftCurlyBracketKeyword_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," actions+=AbstractAction)*
+protected class ComponentInternalBehavior_Impl_Group_3_3 extends GroupToken {
+	
+	public ComponentInternalBehavior_Impl_Group_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getGroup_3_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_ActionsAssignment_3_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ComponentInternalBehavior_Impl_CommaKeyword_3_3_0 extends KeywordToken  {
+	
+	public ComponentInternalBehavior_Impl_CommaKeyword_3_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getCommaKeyword_3_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ComponentInternalBehavior_Impl_ActionsAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// actions+=AbstractAction
+protected class ComponentInternalBehavior_Impl_ActionsAssignment_3_3_1 extends AssignmentToken  {
+	
+	public ComponentInternalBehavior_Impl_ActionsAssignment_3_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAssignment_3_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AbstractAction_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("actions",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("actions");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAbstractActionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAbstractActionParserRuleCall_3_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_CommaKeyword_3_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ComponentInternalBehavior_Impl_RightCurlyBracketKeyword_3_4 extends KeywordToken  {
+	
+	public ComponentInternalBehavior_Impl_RightCurlyBracketKeyword_3_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getRightCurlyBracketKeyword_3_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ComponentInternalBehavior_Impl_ActionsAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ComponentInternalBehavior_Impl_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ComponentInternalBehavior_Impl_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInternalBehavior_ImplAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Impl_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ComponentInternalBehavior_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ComponentInternalBehavior_Impl ****************/
+
+
+/************ begin Rule StartAction ****************
+ *
+ * StartAction returns servicebehavior::StartAction:
+ * 	{servicebehavior::StartAction} "StartAction" "{" ("predecessor"
+ * 	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? "}";
+ *
+ **/
+
+// {servicebehavior::StartAction} "StartAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+// ("successor" successor=[servicebehavior::AbstractAction|EString])? "}"
+protected class StartAction_Group extends GroupToken {
+	
+	public StartAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStartActionAccess().getStartActionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {servicebehavior::StartAction}
+protected class StartAction_StartActionAction_0 extends ActionToken  {
+
+	public StartAction_StartActionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getStartActionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "StartAction"
+protected class StartAction_StartActionKeyword_1 extends KeywordToken  {
+	
+	public StartAction_StartActionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getStartActionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_StartActionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class StartAction_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public StartAction_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_StartActionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class StartAction_Group_3 extends GroupToken {
+	
+	public StartAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_PredecessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class StartAction_PredecessorKeyword_3_0 extends KeywordToken  {
+	
+	public StartAction_PredecessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getPredecessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class StartAction_PredecessorAssignment_3_1 extends AssignmentToken  {
+	
+	public StartAction_PredecessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getPredecessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_PredecessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getStartActionAccess().getPredecessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getStartActionAccess().getPredecessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class StartAction_Group_4 extends GroupToken {
+	
+	public StartAction_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_SuccessorAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class StartAction_SuccessorKeyword_4_0 extends KeywordToken  {
+	
+	public StartAction_SuccessorKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getSuccessorKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new StartAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class StartAction_SuccessorAssignment_4_1 extends AssignmentToken  {
+	
+	public StartAction_SuccessorAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getSuccessorAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_SuccessorKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getStartActionAccess().getSuccessorAbstractActionCrossReference_4_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getStartActionAccess().getSuccessorAbstractActionCrossReference_4_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "}"
+protected class StartAction_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public StartAction_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStartActionAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StartAction_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new StartAction_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new StartAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule StartAction ****************/
+
+
+/************ begin Rule StopAction ****************
+ *
+ * StopAction returns servicebehavior::StopAction:
+ * 	{servicebehavior::StopAction} "StopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+ * 	("successor" successor=[servicebehavior::AbstractAction|EString])? "}";
+ *
+ **/
+
+// {servicebehavior::StopAction} "StopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+// ("successor" successor=[servicebehavior::AbstractAction|EString])? "}"
+protected class StopAction_Group extends GroupToken {
+	
+	public StopAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getStopActionAccess().getStopActionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {servicebehavior::StopAction}
+protected class StopAction_StopActionAction_0 extends ActionToken  {
+
+	public StopAction_StopActionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getStopActionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "StopAction"
+protected class StopAction_StopActionKeyword_1 extends KeywordToken  {
+	
+	public StopAction_StopActionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getStopActionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_StopActionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class StopAction_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public StopAction_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_StopActionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class StopAction_Group_3 extends GroupToken {
+	
+	public StopAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_PredecessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class StopAction_PredecessorKeyword_3_0 extends KeywordToken  {
+	
+	public StopAction_PredecessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getPredecessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class StopAction_PredecessorAssignment_3_1 extends AssignmentToken  {
+	
+	public StopAction_PredecessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getPredecessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_PredecessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getStopActionAccess().getPredecessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getStopActionAccess().getPredecessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class StopAction_Group_4 extends GroupToken {
+	
+	public StopAction_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_SuccessorAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class StopAction_SuccessorKeyword_4_0 extends KeywordToken  {
+	
+	public StopAction_SuccessorKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getSuccessorKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new StopAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class StopAction_SuccessorAssignment_4_1 extends AssignmentToken  {
+	
+	public StopAction_SuccessorAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getSuccessorAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_SuccessorKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getStopActionAccess().getSuccessorAbstractActionCrossReference_4_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getStopActionAccess().getSuccessorAbstractActionCrossReference_4_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "}"
+protected class StopAction_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public StopAction_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getStopActionAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new StopAction_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new StopAction_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new StopAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule StopAction ****************/
+
+
+/************ begin Rule AcquireAction ****************
+ *
+ * AcquireAction returns servicebehavior::AcquireAction:
+ * 	"AcquireAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+ * 	passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}";
+ *
+ **/
+
+// "AcquireAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+// passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}"
+protected class AcquireAction_Group extends GroupToken {
+	
+	public AcquireAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getAcquireActionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "AcquireAction"
+protected class AcquireAction_AcquireActionKeyword_0 extends KeywordToken  {
+	
+	public AcquireAction_AcquireActionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getAcquireActionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class AcquireAction_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public AcquireAction_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_AcquireActionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class AcquireAction_Group_2 extends GroupToken {
+	
+	public AcquireAction_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_PredecessorAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class AcquireAction_PredecessorKeyword_2_0 extends KeywordToken  {
+	
+	public AcquireAction_PredecessorKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getPredecessorKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class AcquireAction_PredecessorAssignment_2_1 extends AssignmentToken  {
+	
+	public AcquireAction_PredecessorAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getPredecessorAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_PredecessorKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAcquireActionAccess().getPredecessorAbstractActionCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAcquireActionAccess().getPredecessorAbstractActionCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class AcquireAction_Group_3 extends GroupToken {
+	
+	public AcquireAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_SuccessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class AcquireAction_SuccessorKeyword_3_0 extends KeywordToken  {
+	
+	public AcquireAction_SuccessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getSuccessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new AcquireAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class AcquireAction_SuccessorAssignment_3_1 extends AssignmentToken  {
+	
+	public AcquireAction_SuccessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getSuccessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_SuccessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAcquireActionAccess().getSuccessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAcquireActionAccess().getSuccessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "passiveResource"
+protected class AcquireAction_PassiveResourceKeyword_4 extends KeywordToken  {
+	
+	public AcquireAction_PassiveResourceKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getPassiveResourceKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new AcquireAction_Group_2(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new AcquireAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString]
+protected class AcquireAction_PassiveResourceAssignment_5 extends AssignmentToken  {
+	
+	public AcquireAction_PassiveResourceAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getPassiveResourceAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_PassiveResourceKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("passiveResource",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("passiveResource");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAcquireActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAcquireActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class AcquireAction_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public AcquireAction_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAcquireActionAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AcquireAction_PassiveResourceAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule AcquireAction ****************/
+
+
+/************ begin Rule ReleaseAction ****************
+ *
+ * ReleaseAction returns servicebehavior::ReleaseAction:
+ * 	"ReleaseAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+ * 	passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}";
+ *
+ **/
+
+// "ReleaseAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+// passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}"
+protected class ReleaseAction_Group extends GroupToken {
+	
+	public ReleaseAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getReleaseActionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ReleaseAction"
+protected class ReleaseAction_ReleaseActionKeyword_0 extends KeywordToken  {
+	
+	public ReleaseAction_ReleaseActionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getReleaseActionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ReleaseAction_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ReleaseAction_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_ReleaseActionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class ReleaseAction_Group_2 extends GroupToken {
+	
+	public ReleaseAction_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_PredecessorAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class ReleaseAction_PredecessorKeyword_2_0 extends KeywordToken  {
+	
+	public ReleaseAction_PredecessorKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getPredecessorKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class ReleaseAction_PredecessorAssignment_2_1 extends AssignmentToken  {
+	
+	public ReleaseAction_PredecessorAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getPredecessorAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_PredecessorKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getReleaseActionAccess().getPredecessorAbstractActionCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getReleaseActionAccess().getPredecessorAbstractActionCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class ReleaseAction_Group_3 extends GroupToken {
+	
+	public ReleaseAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_SuccessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class ReleaseAction_SuccessorKeyword_3_0 extends KeywordToken  {
+	
+	public ReleaseAction_SuccessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getSuccessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ReleaseAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class ReleaseAction_SuccessorAssignment_3_1 extends AssignmentToken  {
+	
+	public ReleaseAction_SuccessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getSuccessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_SuccessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getReleaseActionAccess().getSuccessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getReleaseActionAccess().getSuccessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "passiveResource"
+protected class ReleaseAction_PassiveResourceKeyword_4 extends KeywordToken  {
+	
+	public ReleaseAction_PassiveResourceKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getPassiveResourceKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ReleaseAction_Group_2(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ReleaseAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString]
+protected class ReleaseAction_PassiveResourceAssignment_5 extends AssignmentToken  {
+	
+	public ReleaseAction_PassiveResourceAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getPassiveResourceAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_PassiveResourceKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("passiveResource",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("passiveResource");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getReleaseActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getReleaseActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ReleaseAction_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public ReleaseAction_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getReleaseActionAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ReleaseAction_PassiveResourceAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ReleaseAction ****************/
+
+
+/************ begin Rule InternalAction ****************
+ *
+ * InternalAction returns servicebehavior::InternalAction:
+ * 	{servicebehavior::InternalAction} "InternalAction" "{" ("predecessor"
+ * 	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? ("resourceDemandSpecification" "{"
+ * 	resourceDemandSpecification+=ResourceDemandSpecification (","
+ * 	resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}";
+ *
+ **/
+
+// {servicebehavior::InternalAction} "InternalAction" "{" ("predecessor"
+// predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? ("resourceDemandSpecification" "{"
+// resourceDemandSpecification+=ResourceDemandSpecification (","
+// resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}"
+protected class InternalAction_Group extends GroupToken {
+	
+	public InternalAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getInternalActionAccess().getInternalActionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {servicebehavior::InternalAction}
+protected class InternalAction_InternalActionAction_0 extends ActionToken  {
+
+	public InternalAction_InternalActionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getInternalActionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "InternalAction"
+protected class InternalAction_InternalActionKeyword_1 extends KeywordToken  {
+	
+	public InternalAction_InternalActionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getInternalActionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_InternalActionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class InternalAction_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public InternalAction_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_InternalActionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class InternalAction_Group_3 extends GroupToken {
+	
+	public InternalAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_PredecessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class InternalAction_PredecessorKeyword_3_0 extends KeywordToken  {
+	
+	public InternalAction_PredecessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getPredecessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class InternalAction_PredecessorAssignment_3_1 extends AssignmentToken  {
+	
+	public InternalAction_PredecessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getPredecessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_PredecessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInternalActionAccess().getPredecessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInternalActionAccess().getPredecessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class InternalAction_Group_4 extends GroupToken {
+	
+	public InternalAction_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_SuccessorAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class InternalAction_SuccessorKeyword_4_0 extends KeywordToken  {
+	
+	public InternalAction_SuccessorKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getSuccessorKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InternalAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class InternalAction_SuccessorAssignment_4_1 extends AssignmentToken  {
+	
+	public InternalAction_SuccessorAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getSuccessorAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_SuccessorKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInternalActionAccess().getSuccessorAbstractActionCrossReference_4_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInternalActionAccess().getSuccessorAbstractActionCrossReference_4_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("resourceDemandSpecification" "{" resourceDemandSpecification+=ResourceDemandSpecification (","
+// resourceDemandSpecification+=ResourceDemandSpecification)* "}")?
+protected class InternalAction_Group_5 extends GroupToken {
+	
+	public InternalAction_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_RightCurlyBracketKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "resourceDemandSpecification"
+protected class InternalAction_ResourceDemandSpecificationKeyword_5_0 extends KeywordToken  {
+	
+	public InternalAction_ResourceDemandSpecificationKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getResourceDemandSpecificationKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InternalAction_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new InternalAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class InternalAction_LeftCurlyBracketKeyword_5_1 extends KeywordToken  {
+	
+	public InternalAction_LeftCurlyBracketKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getLeftCurlyBracketKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_ResourceDemandSpecificationKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// resourceDemandSpecification+=ResourceDemandSpecification
+protected class InternalAction_ResourceDemandSpecificationAssignment_5_2 extends AssignmentToken  {
+	
+	public InternalAction_ResourceDemandSpecificationAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getResourceDemandSpecificationAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("resourceDemandSpecification",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("resourceDemandSpecification");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getResourceDemandSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getInternalActionAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new InternalAction_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," resourceDemandSpecification+=ResourceDemandSpecification)*
+protected class InternalAction_Group_5_3 extends GroupToken {
+	
+	public InternalAction_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_ResourceDemandSpecificationAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class InternalAction_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public InternalAction_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InternalAction_ResourceDemandSpecificationAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// resourceDemandSpecification+=ResourceDemandSpecification
+protected class InternalAction_ResourceDemandSpecificationAssignment_5_3_1 extends AssignmentToken  {
+	
+	public InternalAction_ResourceDemandSpecificationAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getResourceDemandSpecificationAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("resourceDemandSpecification",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("resourceDemandSpecification");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getResourceDemandSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getInternalActionAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new InternalAction_CommaKeyword_5_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class InternalAction_RightCurlyBracketKeyword_5_4 extends KeywordToken  {
+	
+	public InternalAction_RightCurlyBracketKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getRightCurlyBracketKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InternalAction_ResourceDemandSpecificationAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class InternalAction_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public InternalAction_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInternalActionAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InternalAction_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InternalAction_Group_4(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new InternalAction_Group_3(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new InternalAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule InternalAction ****************/
+
+
+/************ begin Rule ForkAction ****************
+ *
+ * ForkAction returns servicebehavior::ForkAction:
+ * 	withSynchronizationBarrier?="withSynchronizationBarrier" "ForkAction" "{" ("predecessor"
+ * 	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? ("forkedBehaviors" "{"
+ * 	forkedBehaviors+=ComponentInternalBehavior ("," forkedBehaviors+=ComponentInternalBehavior)* "}")? "}";
+ *
+ **/
+
+// withSynchronizationBarrier?="withSynchronizationBarrier" "ForkAction" "{" ("predecessor"
+// predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? ("forkedBehaviors" "{" forkedBehaviors+=ComponentInternalBehavior
+// ("," forkedBehaviors+=ComponentInternalBehavior)* "}")? "}"
+protected class ForkAction_Group extends GroupToken {
+	
+	public ForkAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getForkActionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// withSynchronizationBarrier?="withSynchronizationBarrier"
+protected class ForkAction_WithSynchronizationBarrierAssignment_0 extends AssignmentToken  {
+	
+	public ForkAction_WithSynchronizationBarrierAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getWithSynchronizationBarrierAssignment_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("withSynchronizationBarrier",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("withSynchronizationBarrier");
+		if(Boolean.TRUE.equals(value)) { // org::eclipse::xtext::impl::KeywordImpl
+			type = AssignmentType.KEYWORD;
+			element = grammarAccess.getForkActionAccess().getWithSynchronizationBarrierWithSynchronizationBarrierKeyword_0_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "ForkAction"
+protected class ForkAction_ForkActionKeyword_1 extends KeywordToken  {
+	
+	public ForkAction_ForkActionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getForkActionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_WithSynchronizationBarrierAssignment_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ForkAction_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ForkAction_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_ForkActionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class ForkAction_Group_3 extends GroupToken {
+	
+	public ForkAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_PredecessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class ForkAction_PredecessorKeyword_3_0 extends KeywordToken  {
+	
+	public ForkAction_PredecessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getPredecessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class ForkAction_PredecessorAssignment_3_1 extends AssignmentToken  {
+	
+	public ForkAction_PredecessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getPredecessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_PredecessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getForkActionAccess().getPredecessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getForkActionAccess().getPredecessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class ForkAction_Group_4 extends GroupToken {
+	
+	public ForkAction_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_SuccessorAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class ForkAction_SuccessorKeyword_4_0 extends KeywordToken  {
+	
+	public ForkAction_SuccessorKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getSuccessorKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ForkAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class ForkAction_SuccessorAssignment_4_1 extends AssignmentToken  {
+	
+	public ForkAction_SuccessorAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getSuccessorAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_SuccessorKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getForkActionAccess().getSuccessorAbstractActionCrossReference_4_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getForkActionAccess().getSuccessorAbstractActionCrossReference_4_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("forkedBehaviors" "{" forkedBehaviors+=ComponentInternalBehavior ("," forkedBehaviors+=ComponentInternalBehavior)*
+// "}")?
+protected class ForkAction_Group_5 extends GroupToken {
+	
+	public ForkAction_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_RightCurlyBracketKeyword_5_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "forkedBehaviors"
+protected class ForkAction_ForkedBehaviorsKeyword_5_0 extends KeywordToken  {
+	
+	public ForkAction_ForkedBehaviorsKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getForkedBehaviorsKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ForkAction_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ForkAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ForkAction_LeftCurlyBracketKeyword_5_1 extends KeywordToken  {
+	
+	public ForkAction_LeftCurlyBracketKeyword_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getLeftCurlyBracketKeyword_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_ForkedBehaviorsKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// forkedBehaviors+=ComponentInternalBehavior
+protected class ForkAction_ForkedBehaviorsAssignment_5_2 extends AssignmentToken  {
+	
+	public ForkAction_ForkedBehaviorsAssignment_5_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getForkedBehaviorsAssignment_5_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("forkedBehaviors",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("forkedBehaviors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInternalBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getForkActionAccess().getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ForkAction_LeftCurlyBracketKeyword_5_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," forkedBehaviors+=ComponentInternalBehavior)*
+protected class ForkAction_Group_5_3 extends GroupToken {
+	
+	public ForkAction_Group_5_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getGroup_5_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_ForkedBehaviorsAssignment_5_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ForkAction_CommaKeyword_5_3_0 extends KeywordToken  {
+	
+	public ForkAction_CommaKeyword_5_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getCommaKeyword_5_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ForkAction_ForkedBehaviorsAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// forkedBehaviors+=ComponentInternalBehavior
+protected class ForkAction_ForkedBehaviorsAssignment_5_3_1 extends AssignmentToken  {
+	
+	public ForkAction_ForkedBehaviorsAssignment_5_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getForkedBehaviorsAssignment_5_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("forkedBehaviors",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("forkedBehaviors");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInternalBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getForkActionAccess().getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ForkAction_CommaKeyword_5_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ForkAction_RightCurlyBracketKeyword_5_4 extends KeywordToken  {
+	
+	public ForkAction_RightCurlyBracketKeyword_5_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getRightCurlyBracketKeyword_5_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_Group_5_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ForkAction_ForkedBehaviorsAssignment_5_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ForkAction_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public ForkAction_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getForkActionAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ForkAction_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ForkAction_Group_4(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ForkAction_Group_3(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new ForkAction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ForkAction ****************/
+
+
+/************ begin Rule BranchAction ****************
+ *
+ * BranchAction returns servicebehavior::BranchAction:
+ * 	"BranchAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? ("branches" "{" branches+=BranchTransition (","
+ * 	branches+=BranchTransition)* "}")? "branchProbabilities" branchProbabilities=BranchProbabilities "}";
+ *
+ **/
+
+// "BranchAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? ("branches" "{" branches+=BranchTransition (","
+// branches+=BranchTransition)* "}")? "branchProbabilities" branchProbabilities=BranchProbabilities "}"
+protected class BranchAction_Group extends GroupToken {
+	
+	public BranchAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBranchActionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "BranchAction"
+protected class BranchAction_BranchActionKeyword_0 extends KeywordToken  {
+	
+	public BranchAction_BranchActionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getBranchActionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class BranchAction_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public BranchAction_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_BranchActionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class BranchAction_Group_2 extends GroupToken {
+	
+	public BranchAction_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_PredecessorAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class BranchAction_PredecessorKeyword_2_0 extends KeywordToken  {
+	
+	public BranchAction_PredecessorKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getPredecessorKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class BranchAction_PredecessorAssignment_2_1 extends AssignmentToken  {
+	
+	public BranchAction_PredecessorAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getPredecessorAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_PredecessorKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBranchActionAccess().getPredecessorAbstractActionCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getBranchActionAccess().getPredecessorAbstractActionCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class BranchAction_Group_3 extends GroupToken {
+	
+	public BranchAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_SuccessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class BranchAction_SuccessorKeyword_3_0 extends KeywordToken  {
+	
+	public BranchAction_SuccessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getSuccessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BranchAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class BranchAction_SuccessorAssignment_3_1 extends AssignmentToken  {
+	
+	public BranchAction_SuccessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getSuccessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_SuccessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBranchActionAccess().getSuccessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getBranchActionAccess().getSuccessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("branches" "{" branches+=BranchTransition ("," branches+=BranchTransition)* "}")?
+protected class BranchAction_Group_4 extends GroupToken {
+	
+	public BranchAction_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_RightCurlyBracketKeyword_4_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "branches"
+protected class BranchAction_BranchesKeyword_4_0 extends KeywordToken  {
+	
+	public BranchAction_BranchesKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getBranchesKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BranchAction_Group_2(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BranchAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BranchAction_LeftCurlyBracketKeyword_4_1 extends KeywordToken  {
+	
+	public BranchAction_LeftCurlyBracketKeyword_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_BranchesKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// branches+=BranchTransition
+protected class BranchAction_BranchesAssignment_4_2 extends AssignmentToken  {
+	
+	public BranchAction_BranchesAssignment_4_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getBranchesAssignment_4_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("branches",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("branches");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBranchTransitionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBranchActionAccess().getBranchesBranchTransitionParserRuleCall_4_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BranchAction_LeftCurlyBracketKeyword_4_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," branches+=BranchTransition)*
+protected class BranchAction_Group_4_3 extends GroupToken {
+	
+	public BranchAction_Group_4_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getGroup_4_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_BranchesAssignment_4_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BranchAction_CommaKeyword_4_3_0 extends KeywordToken  {
+	
+	public BranchAction_CommaKeyword_4_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getCommaKeyword_4_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_Group_4_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BranchAction_BranchesAssignment_4_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// branches+=BranchTransition
+protected class BranchAction_BranchesAssignment_4_3_1 extends AssignmentToken  {
+	
+	public BranchAction_BranchesAssignment_4_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getBranchesAssignment_4_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("branches",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("branches");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBranchTransitionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBranchActionAccess().getBranchesBranchTransitionParserRuleCall_4_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BranchAction_CommaKeyword_4_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BranchAction_RightCurlyBracketKeyword_4_4 extends KeywordToken  {
+	
+	public BranchAction_RightCurlyBracketKeyword_4_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_4_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_Group_4_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BranchAction_BranchesAssignment_4_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "branchProbabilities"
+protected class BranchAction_BranchProbabilitiesKeyword_5 extends KeywordToken  {
+	
+	public BranchAction_BranchProbabilitiesKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getBranchProbabilitiesKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BranchAction_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new BranchAction_Group_2(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new BranchAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// branchProbabilities=BranchProbabilities
+protected class BranchAction_BranchProbabilitiesAssignment_6 extends AssignmentToken  {
+	
+	public BranchAction_BranchProbabilitiesAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getBranchProbabilitiesAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchProbabilities_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("branchProbabilities",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("branchProbabilities");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBranchProbabilitiesRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBranchActionAccess().getBranchProbabilitiesBranchProbabilitiesParserRuleCall_6_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BranchAction_BranchProbabilitiesKeyword_5(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class BranchAction_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public BranchAction_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchAction_BranchProbabilitiesAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BranchAction ****************/
+
+
+/************ begin Rule LoopAction ****************
+ *
+ * LoopAction returns servicebehavior::LoopAction:
+ * 	"LoopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? "loopBodyBehavior" loopBodyBehavior=ComponentInternalBehavior
+ * 	"loopIterationCountDistribution" loopIterationCountDistribution=LoopIterationCountDistribution "}";
+ *
+ **/
+
+// "LoopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? "loopBodyBehavior" loopBodyBehavior=ComponentInternalBehavior
+// "loopIterationCountDistribution" loopIterationCountDistribution=LoopIterationCountDistribution "}"
+protected class LoopAction_Group extends GroupToken {
+	
+	public LoopAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLoopActionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "LoopAction"
+protected class LoopAction_LoopActionKeyword_0 extends KeywordToken  {
+	
+	public LoopAction_LoopActionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getLoopActionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class LoopAction_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public LoopAction_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_LoopActionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class LoopAction_Group_2 extends GroupToken {
+	
+	public LoopAction_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_PredecessorAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class LoopAction_PredecessorKeyword_2_0 extends KeywordToken  {
+	
+	public LoopAction_PredecessorKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getPredecessorKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class LoopAction_PredecessorAssignment_2_1 extends AssignmentToken  {
+	
+	public LoopAction_PredecessorAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getPredecessorAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_PredecessorKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getLoopActionAccess().getPredecessorAbstractActionCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getLoopActionAccess().getPredecessorAbstractActionCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class LoopAction_Group_3 extends GroupToken {
+	
+	public LoopAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_SuccessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class LoopAction_SuccessorKeyword_3_0 extends KeywordToken  {
+	
+	public LoopAction_SuccessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getSuccessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new LoopAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class LoopAction_SuccessorAssignment_3_1 extends AssignmentToken  {
+	
+	public LoopAction_SuccessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getSuccessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_SuccessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getLoopActionAccess().getSuccessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getLoopActionAccess().getSuccessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "loopBodyBehavior"
+protected class LoopAction_LoopBodyBehaviorKeyword_4 extends KeywordToken  {
+	
+	public LoopAction_LoopBodyBehaviorKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getLoopBodyBehaviorKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new LoopAction_Group_2(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new LoopAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// loopBodyBehavior=ComponentInternalBehavior
+protected class LoopAction_LoopBodyBehaviorAssignment_5 extends AssignmentToken  {
+	
+	public LoopAction_LoopBodyBehaviorAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getLoopBodyBehaviorAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("loopBodyBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("loopBodyBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInternalBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getLoopActionAccess().getLoopBodyBehaviorComponentInternalBehaviorParserRuleCall_5_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new LoopAction_LoopBodyBehaviorKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "loopIterationCountDistribution"
+protected class LoopAction_LoopIterationCountDistributionKeyword_6 extends KeywordToken  {
+	
+	public LoopAction_LoopIterationCountDistributionKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getLoopIterationCountDistributionKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_LoopBodyBehaviorAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// loopIterationCountDistribution=LoopIterationCountDistribution
+protected class LoopAction_LoopIterationCountDistributionAssignment_7 extends AssignmentToken  {
+	
+	public LoopAction_LoopIterationCountDistributionAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getLoopIterationCountDistributionAssignment_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopIterationCountDistribution_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("loopIterationCountDistribution",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("loopIterationCountDistribution");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getLoopIterationCountDistributionRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getLoopActionAccess().getLoopIterationCountDistributionLoopIterationCountDistributionParserRuleCall_7_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new LoopAction_LoopIterationCountDistributionKeyword_6(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class LoopAction_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public LoopAction_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopAction_LoopIterationCountDistributionAssignment_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule LoopAction ****************/
+
+
+/************ begin Rule ExternalCallAction ****************
+ *
+ * ExternalCallAction returns servicebehavior::ExternalCallAction:
+ * 	"ExternalCallAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+ * 	successor=[servicebehavior::AbstractAction|EString])? "signature" signature=[repository::Signature|EString]
+ * 	"requiredRole" requiredRole=[repository::RequiredRole|EString] "}";
+ *
+ **/
+
+// "ExternalCallAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+// successor=[servicebehavior::AbstractAction|EString])? "signature" signature=[repository::Signature|EString]
+// "requiredRole" requiredRole=[repository::RequiredRole|EString] "}"
+protected class ExternalCallAction_Group extends GroupToken {
+	
+	public ExternalCallAction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallActionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ExternalCallAction"
+protected class ExternalCallAction_ExternalCallActionKeyword_0 extends KeywordToken  {
+	
+	public ExternalCallAction_ExternalCallActionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getExternalCallActionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ExternalCallAction_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ExternalCallAction_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_ExternalCallActionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+protected class ExternalCallAction_Group_2 extends GroupToken {
+	
+	public ExternalCallAction_Group_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getGroup_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_PredecessorAssignment_2_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "predecessor"
+protected class ExternalCallAction_PredecessorKeyword_2_0 extends KeywordToken  {
+	
+	public ExternalCallAction_PredecessorKeyword_2_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getPredecessorKeyword_2_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// predecessor=[servicebehavior::AbstractAction|EString]
+protected class ExternalCallAction_PredecessorAssignment_2_1 extends AssignmentToken  {
+	
+	public ExternalCallAction_PredecessorAssignment_2_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getPredecessorAssignment_2_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_PredecessorKeyword_2_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("predecessor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("predecessor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallActionAccess().getPredecessorAbstractActionCrossReference_2_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallActionAccess().getPredecessorAbstractActionCrossReference_2_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("successor" successor=[servicebehavior::AbstractAction|EString])?
+protected class ExternalCallAction_Group_3 extends GroupToken {
+	
+	public ExternalCallAction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_SuccessorAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "successor"
+protected class ExternalCallAction_SuccessorKeyword_3_0 extends KeywordToken  {
+	
+	public ExternalCallAction_SuccessorKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getSuccessorKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// successor=[servicebehavior::AbstractAction|EString]
+protected class ExternalCallAction_SuccessorAssignment_3_1 extends AssignmentToken  {
+	
+	public ExternalCallAction_SuccessorAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getSuccessorAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_SuccessorKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("successor",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("successor");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallActionAccess().getSuccessorAbstractActionCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallActionAccess().getSuccessorAbstractActionCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "signature"
+protected class ExternalCallAction_SignatureKeyword_4 extends KeywordToken  {
+	
+	public ExternalCallAction_SignatureKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getSignatureKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ExternalCallAction_Group_2(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new ExternalCallAction_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// signature=[repository::Signature|EString]
+protected class ExternalCallAction_SignatureAssignment_5 extends AssignmentToken  {
+	
+	public ExternalCallAction_SignatureAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getSignatureAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_SignatureKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("signature",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("signature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallActionAccess().getSignatureSignatureCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallActionAccess().getSignatureSignatureCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "requiredRole"
+protected class ExternalCallAction_RequiredRoleKeyword_6 extends KeywordToken  {
+	
+	public ExternalCallAction_RequiredRoleKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getRequiredRoleKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_SignatureAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRole=[repository::RequiredRole|EString]
+protected class ExternalCallAction_RequiredRoleAssignment_7 extends AssignmentToken  {
+	
+	public ExternalCallAction_RequiredRoleAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getRequiredRoleAssignment_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_RequiredRoleKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallActionAccess().getRequiredRoleRequiredRoleCrossReference_7_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCallActionAccess().getRequiredRoleRequiredRoleCrossReference_7_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ExternalCallAction_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public ExternalCallAction_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallActionAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallAction_RequiredRoleAssignment_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExternalCallAction ****************/
+
+
+/************ begin Rule PassiveResourceSpecification ****************
+ *
+ * PassiveResourceSpecification returns resourceconfiguration::PassiveResourceSpecification:
+ * 	"PassiveResourceSpecification" id=EString "{" "name" name=EString "passiveResourceType"
+ * 	passiveResourceType=[resourcetype::PassiveResourceType|EString] "capacity" capacity=PassiveResourceCapacity "}";
+ *
+ **/
+
+// "PassiveResourceSpecification" id=EString "{" "name" name=EString "passiveResourceType"
+// passiveResourceType=[resourcetype::PassiveResourceType|EString] "capacity" capacity=PassiveResourceCapacity "}"
+protected class PassiveResourceSpecification_Group extends GroupToken {
+	
+	public PassiveResourceSpecification_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_RightCurlyBracketKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPassiveResourceSpecificationRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "PassiveResourceSpecification"
+protected class PassiveResourceSpecification_PassiveResourceSpecificationKeyword_0 extends KeywordToken  {
+	
+	public PassiveResourceSpecification_PassiveResourceSpecificationKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceSpecificationKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class PassiveResourceSpecification_IdAssignment_1 extends AssignmentToken  {
+	
+	public PassiveResourceSpecification_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_PassiveResourceSpecificationKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPassiveResourceSpecificationAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getPassiveResourceSpecificationAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class PassiveResourceSpecification_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public PassiveResourceSpecification_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class PassiveResourceSpecification_NameKeyword_3 extends KeywordToken  {
+	
+	public PassiveResourceSpecification_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class PassiveResourceSpecification_NameAssignment_4 extends AssignmentToken  {
+	
+	public PassiveResourceSpecification_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPassiveResourceSpecificationAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getPassiveResourceSpecificationAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "passiveResourceType"
+protected class PassiveResourceSpecification_PassiveResourceTypeKeyword_5 extends KeywordToken  {
+	
+	public PassiveResourceSpecification_PassiveResourceTypeKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypeKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// passiveResourceType=[resourcetype::PassiveResourceType|EString]
+protected class PassiveResourceSpecification_PassiveResourceTypeAssignment_6 extends AssignmentToken  {
+	
+	public PassiveResourceSpecification_PassiveResourceTypeAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypeAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_PassiveResourceTypeKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("passiveResourceType",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("passiveResourceType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypePassiveResourceTypeCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypePassiveResourceTypeCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "capacity"
+protected class PassiveResourceSpecification_CapacityKeyword_7 extends KeywordToken  {
+	
+	public PassiveResourceSpecification_CapacityKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getCapacityKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_PassiveResourceTypeAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// capacity=PassiveResourceCapacity
+protected class PassiveResourceSpecification_CapacityAssignment_8 extends AssignmentToken  {
+	
+	public PassiveResourceSpecification_CapacityAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getCapacityAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("capacity",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("capacity");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getPassiveResourceCapacityRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getPassiveResourceSpecificationAccess().getCapacityPassiveResourceCapacityParserRuleCall_8_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_CapacityKeyword_7(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class PassiveResourceSpecification_RightCurlyBracketKeyword_9 extends KeywordToken  {
+	
+	public PassiveResourceSpecification_RightCurlyBracketKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceSpecificationAccess().getRightCurlyBracketKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceSpecification_CapacityAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule PassiveResourceSpecification ****************/
+
+
+/************ begin Rule PassiveResourceCapacity ****************
+ *
+ * PassiveResourceCapacity returns resourceconfiguration::PassiveResourceCapacity:
+ * 	"PassiveResourceCapacity" id=EString "{" "name" name=EString "capacity" capacity=EBigInteger "}";
+ *
+ **/
+
+// "PassiveResourceCapacity" id=EString "{" "name" name=EString "capacity" capacity=EBigInteger "}"
+protected class PassiveResourceCapacity_Group extends GroupToken {
+	
+	public PassiveResourceCapacity_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPassiveResourceCapacityRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "PassiveResourceCapacity"
+protected class PassiveResourceCapacity_PassiveResourceCapacityKeyword_0 extends KeywordToken  {
+	
+	public PassiveResourceCapacity_PassiveResourceCapacityKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getPassiveResourceCapacityKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class PassiveResourceCapacity_IdAssignment_1 extends AssignmentToken  {
+	
+	public PassiveResourceCapacity_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_PassiveResourceCapacityKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPassiveResourceCapacityAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getPassiveResourceCapacityAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class PassiveResourceCapacity_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public PassiveResourceCapacity_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class PassiveResourceCapacity_NameKeyword_3 extends KeywordToken  {
+	
+	public PassiveResourceCapacity_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class PassiveResourceCapacity_NameAssignment_4 extends AssignmentToken  {
+	
+	public PassiveResourceCapacity_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPassiveResourceCapacityAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getPassiveResourceCapacityAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "capacity"
+protected class PassiveResourceCapacity_CapacityKeyword_5 extends KeywordToken  {
+	
+	public PassiveResourceCapacity_CapacityKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getCapacityKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// capacity=EBigInteger
+protected class PassiveResourceCapacity_CapacityAssignment_6 extends AssignmentToken  {
+	
+	public PassiveResourceCapacity_CapacityAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getCapacityAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_CapacityKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("capacity",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("capacity");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPassiveResourceCapacityAccess().getCapacityEBigIntegerParserRuleCall_6_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getPassiveResourceCapacityAccess().getCapacityEBigIntegerParserRuleCall_6_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class PassiveResourceCapacity_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public PassiveResourceCapacity_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceCapacityAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceCapacity_CapacityAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule PassiveResourceCapacity ****************/
+
+
+/************ begin Rule PassiveResourceType ****************
+ *
+ * PassiveResourceType returns resourcetype::PassiveResourceType:
+ * 	"PassiveResourceType" id=EString "{" "name" name=EString "}";
+ *
+ **/
+
+// "PassiveResourceType" id=EString "{" "name" name=EString "}"
+protected class PassiveResourceType_Group extends GroupToken {
+	
+	public PassiveResourceType_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getPassiveResourceTypeAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceType_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getPassiveResourceTypeRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "PassiveResourceType"
+protected class PassiveResourceType_PassiveResourceTypeKeyword_0 extends KeywordToken  {
+	
+	public PassiveResourceType_PassiveResourceTypeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceTypeAccess().getPassiveResourceTypeKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class PassiveResourceType_IdAssignment_1 extends AssignmentToken  {
+	
+	public PassiveResourceType_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceTypeAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceType_PassiveResourceTypeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPassiveResourceTypeAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getPassiveResourceTypeAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class PassiveResourceType_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public PassiveResourceType_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceTypeAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceType_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class PassiveResourceType_NameKeyword_3 extends KeywordToken  {
+	
+	public PassiveResourceType_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceTypeAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceType_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class PassiveResourceType_NameAssignment_4 extends AssignmentToken  {
+	
+	public PassiveResourceType_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getPassiveResourceTypeAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceType_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getPassiveResourceTypeAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getPassiveResourceTypeAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class PassiveResourceType_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public PassiveResourceType_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getPassiveResourceTypeAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new PassiveResourceType_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule PassiveResourceType ****************/
+
+
+
+/************ begin Rule ResourceDemandSpecification ****************
+ *
+ * ResourceDemandSpecification returns servicebehavior::ResourceDemandSpecification:
+ * 	"ResourceDemandSpecification" "{" "processingResourceType"
+ * 	processingResourceType=[resourcetype::ProcessingResourceType|EString] "}";
+ *
+ **/
+
+// "ResourceDemandSpecification" "{" "processingResourceType"
+// processingResourceType=[resourcetype::ProcessingResourceType|EString] "}"
+protected class ResourceDemandSpecification_Group extends GroupToken {
+	
+	public ResourceDemandSpecification_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getResourceDemandSpecificationAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getResourceDemandSpecificationRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ResourceDemandSpecification"
+protected class ResourceDemandSpecification_ResourceDemandSpecificationKeyword_0 extends KeywordToken  {
+	
+	public ResourceDemandSpecification_ResourceDemandSpecificationKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getResourceDemandSpecificationAccess().getResourceDemandSpecificationKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ResourceDemandSpecification_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ResourceDemandSpecification_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getResourceDemandSpecificationAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_ResourceDemandSpecificationKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "processingResourceType"
+protected class ResourceDemandSpecification_ProcessingResourceTypeKeyword_2 extends KeywordToken  {
+	
+	public ResourceDemandSpecification_ProcessingResourceTypeKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// processingResourceType=[resourcetype::ProcessingResourceType|EString]
+protected class ResourceDemandSpecification_ProcessingResourceTypeAssignment_3 extends AssignmentToken  {
+	
+	public ResourceDemandSpecification_ProcessingResourceTypeAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_ProcessingResourceTypeKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("processingResourceType",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("processingResourceType");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeProcessingResourceTypeCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeProcessingResourceTypeCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ResourceDemandSpecification_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ResourceDemandSpecification_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getResourceDemandSpecificationAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ResourceDemandSpecification_ProcessingResourceTypeAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ResourceDemandSpecification ****************/
+
+
+/************ begin Rule ProcessingResourceType_Impl ****************
+ *
+ * ProcessingResourceType_Impl returns resourcetype::ProcessingResourceType:
+ * 	"ProcessingResourceType" id=EString "{" "name" name=EString "}";
+ *
+ **/
+
+// "ProcessingResourceType" id=EString "{" "name" name=EString "}"
+protected class ProcessingResourceType_Impl_Group extends GroupToken {
+	
+	public ProcessingResourceType_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProcessingResourceType_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_Impl_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProcessingResourceType_ImplRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ProcessingResourceType"
+protected class ProcessingResourceType_Impl_ProcessingResourceTypeKeyword_0 extends KeywordToken  {
+	
+	public ProcessingResourceType_Impl_ProcessingResourceTypeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProcessingResourceType_ImplAccess().getProcessingResourceTypeKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class ProcessingResourceType_Impl_IdAssignment_1 extends AssignmentToken  {
+	
+	public ProcessingResourceType_Impl_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProcessingResourceType_ImplAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_Impl_ProcessingResourceTypeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProcessingResourceType_ImplAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProcessingResourceType_ImplAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class ProcessingResourceType_Impl_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ProcessingResourceType_Impl_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProcessingResourceType_ImplAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_Impl_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class ProcessingResourceType_Impl_NameKeyword_3 extends KeywordToken  {
+	
+	public ProcessingResourceType_Impl_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProcessingResourceType_ImplAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_Impl_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class ProcessingResourceType_Impl_NameAssignment_4 extends AssignmentToken  {
+	
+	public ProcessingResourceType_Impl_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProcessingResourceType_ImplAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_Impl_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProcessingResourceType_ImplAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProcessingResourceType_ImplAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ProcessingResourceType_Impl_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public ProcessingResourceType_Impl_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProcessingResourceType_ImplAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProcessingResourceType_Impl_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ProcessingResourceType_Impl ****************/
+
+
+/************ begin Rule CommunicationLinkResourceType ****************
+ *
+ * CommunicationLinkResourceType returns resourcetype::CommunicationLinkResourceType:
+ * 	"CommunicationLinkResourceType" id=EString "{" "name" name=EString "}";
+ *
+ **/
+
+// "CommunicationLinkResourceType" id=EString "{" "name" name=EString "}"
+protected class CommunicationLinkResourceType_Group extends GroupToken {
+	
+	public CommunicationLinkResourceType_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCommunicationLinkResourceTypeAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CommunicationLinkResourceType_RightCurlyBracketKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCommunicationLinkResourceTypeRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CommunicationLinkResourceType"
+protected class CommunicationLinkResourceType_CommunicationLinkResourceTypeKeyword_0 extends KeywordToken  {
+	
+	public CommunicationLinkResourceType_CommunicationLinkResourceTypeKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCommunicationLinkResourceTypeAccess().getCommunicationLinkResourceTypeKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class CommunicationLinkResourceType_IdAssignment_1 extends AssignmentToken  {
+	
+	public CommunicationLinkResourceType_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCommunicationLinkResourceTypeAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CommunicationLinkResourceType_CommunicationLinkResourceTypeKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCommunicationLinkResourceTypeAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCommunicationLinkResourceTypeAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class CommunicationLinkResourceType_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public CommunicationLinkResourceType_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCommunicationLinkResourceTypeAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CommunicationLinkResourceType_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class CommunicationLinkResourceType_NameKeyword_3 extends KeywordToken  {
+	
+	public CommunicationLinkResourceType_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCommunicationLinkResourceTypeAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CommunicationLinkResourceType_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class CommunicationLinkResourceType_NameAssignment_4 extends AssignmentToken  {
+	
+	public CommunicationLinkResourceType_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCommunicationLinkResourceTypeAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CommunicationLinkResourceType_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getCommunicationLinkResourceTypeAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getCommunicationLinkResourceTypeAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class CommunicationLinkResourceType_RightCurlyBracketKeyword_5 extends KeywordToken  {
+	
+	public CommunicationLinkResourceType_RightCurlyBracketKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCommunicationLinkResourceTypeAccess().getRightCurlyBracketKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CommunicationLinkResourceType_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CommunicationLinkResourceType ****************/
+
+
+
+/************ begin Rule BranchTransition ****************
+ *
+ * BranchTransition returns servicebehavior::BranchTransition:
+ * 	"BranchTransition" id=EString "{" "name" name=EString "branchBehavior" branchBehavior=ComponentInternalBehavior "}";
+ *
+ **/
+
+// "BranchTransition" id=EString "{" "name" name=EString "branchBehavior" branchBehavior=ComponentInternalBehavior "}"
+protected class BranchTransition_Group extends GroupToken {
+	
+	public BranchTransition_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBranchTransitionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "BranchTransition"
+protected class BranchTransition_BranchTransitionKeyword_0 extends KeywordToken  {
+	
+	public BranchTransition_BranchTransitionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getBranchTransitionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class BranchTransition_IdAssignment_1 extends AssignmentToken  {
+	
+	public BranchTransition_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_BranchTransitionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getBranchTransitionAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getBranchTransitionAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class BranchTransition_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public BranchTransition_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class BranchTransition_NameKeyword_3 extends KeywordToken  {
+	
+	public BranchTransition_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class BranchTransition_NameAssignment_4 extends AssignmentToken  {
+	
+	public BranchTransition_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getBranchTransitionAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getBranchTransitionAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "branchBehavior"
+protected class BranchTransition_BranchBehaviorKeyword_5 extends KeywordToken  {
+	
+	public BranchTransition_BranchBehaviorKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getBranchBehaviorKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// branchBehavior=ComponentInternalBehavior
+protected class BranchTransition_BranchBehaviorAssignment_6 extends AssignmentToken  {
+	
+	public BranchTransition_BranchBehaviorAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getBranchBehaviorAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInternalBehavior_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("branchBehavior",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("branchBehavior");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInternalBehaviorRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBranchTransitionAccess().getBranchBehaviorComponentInternalBehaviorParserRuleCall_6_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BranchTransition_BranchBehaviorKeyword_5(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class BranchTransition_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public BranchTransition_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchTransitionAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchTransition_BranchBehaviorAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BranchTransition ****************/
+
+
+/************ begin Rule BranchProbabilities ****************
+ *
+ * BranchProbabilities returns servicebehavior::BranchProbabilities:
+ * 	"BranchProbabilities" "{" "probabilities" probabilities=[functions::RandomVariable|EString] "}";
+ *
+ **/
+
+// "BranchProbabilities" "{" "probabilities" probabilities=[functions::RandomVariable|EString] "}"
+protected class BranchProbabilities_Group extends GroupToken {
+	
+	public BranchProbabilities_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBranchProbabilitiesAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchProbabilities_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBranchProbabilitiesRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "BranchProbabilities"
+protected class BranchProbabilities_BranchProbabilitiesKeyword_0 extends KeywordToken  {
+	
+	public BranchProbabilities_BranchProbabilitiesKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchProbabilitiesAccess().getBranchProbabilitiesKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class BranchProbabilities_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public BranchProbabilities_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchProbabilitiesAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchProbabilities_BranchProbabilitiesKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "probabilities"
+protected class BranchProbabilities_ProbabilitiesKeyword_2 extends KeywordToken  {
+	
+	public BranchProbabilities_ProbabilitiesKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchProbabilities_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// probabilities=[functions::RandomVariable|EString]
+protected class BranchProbabilities_ProbabilitiesAssignment_3 extends AssignmentToken  {
+	
+	public BranchProbabilities_ProbabilitiesAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchProbabilities_ProbabilitiesKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("probabilities",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("probabilities");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesRandomVariableCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesRandomVariableCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class BranchProbabilities_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public BranchProbabilities_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBranchProbabilitiesAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BranchProbabilities_ProbabilitiesAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BranchProbabilities ****************/
+
+
+/************ begin Rule RandomVariable ****************
+ *
+ * RandomVariable returns functions::RandomVariable:
+ * 	"RandomVariable" "{" "specification" specification=EString "probFunction"
+ * 	probFunction=[functions::ProbabilityFunction|EString] "}";
+ *
+ **/
+
+// "RandomVariable" "{" "specification" specification=EString "probFunction"
+// probFunction=[functions::ProbabilityFunction|EString] "}"
+protected class RandomVariable_Group extends GroupToken {
+	
+	public RandomVariable_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RandomVariable_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRandomVariableRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "RandomVariable"
+protected class RandomVariable_RandomVariableKeyword_0 extends KeywordToken  {
+	
+	public RandomVariable_RandomVariableKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getRandomVariableKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class RandomVariable_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public RandomVariable_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RandomVariable_RandomVariableKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "specification"
+protected class RandomVariable_SpecificationKeyword_2 extends KeywordToken  {
+	
+	public RandomVariable_SpecificationKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getSpecificationKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RandomVariable_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// specification=EString
+protected class RandomVariable_SpecificationAssignment_3 extends AssignmentToken  {
+	
+	public RandomVariable_SpecificationAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getSpecificationAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RandomVariable_SpecificationKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("specification",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("specification");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRandomVariableAccess().getSpecificationEStringParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRandomVariableAccess().getSpecificationEStringParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "probFunction"
+protected class RandomVariable_ProbFunctionKeyword_4 extends KeywordToken  {
+	
+	public RandomVariable_ProbFunctionKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getProbFunctionKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RandomVariable_SpecificationAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// probFunction=[functions::ProbabilityFunction|EString]
+protected class RandomVariable_ProbFunctionAssignment_5 extends AssignmentToken  {
+	
+	public RandomVariable_ProbFunctionAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getProbFunctionAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RandomVariable_ProbFunctionKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("probFunction",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("probFunction");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRandomVariableAccess().getProbFunctionProbabilityFunctionCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getRandomVariableAccess().getProbFunctionProbabilityFunctionCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class RandomVariable_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public RandomVariable_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRandomVariableAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RandomVariable_ProbFunctionAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule RandomVariable ****************/
+
+
+/************ begin Rule ProbabilityMassFunction ****************
+ *
+ * ProbabilityMassFunction returns functions::ProbabilityMassFunction:
+ * 	{functions::ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)*
+ * 	"}")? "}";
+ *
+ **/
+
+// {functions::ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)*
+// "}")? "}"
+protected class ProbabilityMassFunction_Group extends GroupToken {
+	
+	public ProbabilityMassFunction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {functions::ProbabilityMassFunction}
+protected class ProbabilityMassFunction_ProbabilityMassFunctionAction_0 extends ActionToken  {
+
+	public ProbabilityMassFunction_ProbabilityMassFunctionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ProbabilityMassFunction"
+protected class ProbabilityMassFunction_ProbabilityMassFunctionKeyword_1 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_ProbabilityMassFunctionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_ProbabilityMassFunctionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ProbabilityMassFunction_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_ProbabilityMassFunctionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("sample" "{" sample+=Sample ("," sample+=Sample)* "}")?
+protected class ProbabilityMassFunction_Group_3 extends GroupToken {
+	
+	public ProbabilityMassFunction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_RightCurlyBracketKeyword_3_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "sample"
+protected class ProbabilityMassFunction_SampleKeyword_3_0 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_SampleKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ProbabilityMassFunction_LeftCurlyBracketKeyword_3_1 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_LeftCurlyBracketKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_SampleKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=Sample
+protected class ProbabilityMassFunction_SampleAssignment_3_2 extends AssignmentToken  {
+	
+	public ProbabilityMassFunction_SampleAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_LeftCurlyBracketKeyword_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," sample+=Sample)*
+protected class ProbabilityMassFunction_Group_3_3 extends GroupToken {
+	
+	public ProbabilityMassFunction_Group_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getGroup_3_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_SampleAssignment_3_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ProbabilityMassFunction_CommaKeyword_3_3_0 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_CommaKeyword_3_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProbabilityMassFunction_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=Sample
+protected class ProbabilityMassFunction_SampleAssignment_3_3_1 extends AssignmentToken  {
+	
+	public ProbabilityMassFunction_SampleAssignment_3_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getSampleAssignment_3_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_CommaKeyword_3_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class ProbabilityMassFunction_RightCurlyBracketKeyword_3_4 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_RightCurlyBracketKeyword_3_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProbabilityMassFunction_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ProbabilityMassFunction_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ProbabilityMassFunction_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityMassFunction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ProbabilityMassFunction_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ProbabilityMassFunction ****************/
+
+
+/************ begin Rule ProbabilityDensityFunction_Impl ****************
+ *
+ * ProbabilityDensityFunction_Impl returns functions::ProbabilityDensityFunction:
+ * 	{functions::ProbabilityDensityFunction} "ProbabilityDensityFunction";
+ *
+ **/
+
+// {functions::ProbabilityDensityFunction} "ProbabilityDensityFunction"
+protected class ProbabilityDensityFunction_Impl_Group extends GroupToken {
+	
+	public ProbabilityDensityFunction_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProbabilityDensityFunction_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityDensityFunction_Impl_ProbabilityDensityFunctionKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {functions::ProbabilityDensityFunction}
+protected class ProbabilityDensityFunction_Impl_ProbabilityDensityFunctionAction_0 extends ActionToken  {
+
+	public ProbabilityDensityFunction_Impl_ProbabilityDensityFunctionAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ProbabilityDensityFunction"
+protected class ProbabilityDensityFunction_Impl_ProbabilityDensityFunctionKeyword_1 extends KeywordToken  {
+	
+	public ProbabilityDensityFunction_Impl_ProbabilityDensityFunctionKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProbabilityDensityFunction_Impl_ProbabilityDensityFunctionAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ProbabilityDensityFunction_Impl ****************/
+
+
+/************ begin Rule BoxedPDF ****************
+ *
+ * BoxedPDF returns functions::BoxedPDF:
+ * 	{functions::BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}";
+ *
+ **/
+
+// {functions::BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}"
+protected class BoxedPDF_Group extends GroupToken {
+	
+	public BoxedPDF_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {functions::BoxedPDF}
+protected class BoxedPDF_BoxedPDFAction_0 extends ActionToken  {
+
+	public BoxedPDF_BoxedPDFAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "BoxedPDF"
+protected class BoxedPDF_BoxedPDFKeyword_1 extends KeywordToken  {
+	
+	public BoxedPDF_BoxedPDFKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_BoxedPDFAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BoxedPDF_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public BoxedPDF_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_BoxedPDFKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")?
+protected class BoxedPDF_Group_3 extends GroupToken {
+	
+	public BoxedPDF_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_RightCurlyBracketKeyword_3_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "sample"
+protected class BoxedPDF_SampleKeyword_3_0 extends KeywordToken  {
+	
+	public BoxedPDF_SampleKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class BoxedPDF_LeftCurlyBracketKeyword_3_1 extends KeywordToken  {
+	
+	public BoxedPDF_LeftCurlyBracketKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_SampleKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=ContinuousSample
+protected class BoxedPDF_SampleAssignment_3_2 extends AssignmentToken  {
+	
+	public BoxedPDF_SampleAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getContinuousSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BoxedPDF_LeftCurlyBracketKeyword_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," sample+=ContinuousSample)*
+protected class BoxedPDF_Group_3_3 extends GroupToken {
+	
+	public BoxedPDF_Group_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getGroup_3_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_SampleAssignment_3_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class BoxedPDF_CommaKeyword_3_3_0 extends KeywordToken  {
+	
+	public BoxedPDF_CommaKeyword_3_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BoxedPDF_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sample+=ContinuousSample
+protected class BoxedPDF_SampleAssignment_3_3_1 extends AssignmentToken  {
+	
+	public BoxedPDF_SampleAssignment_3_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getSampleAssignment_3_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sample",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sample");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getContinuousSampleRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new BoxedPDF_CommaKeyword_3_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+// "}"
+protected class BoxedPDF_RightCurlyBracketKeyword_3_4 extends KeywordToken  {
+	
+	public BoxedPDF_RightCurlyBracketKeyword_3_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BoxedPDF_SampleAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class BoxedPDF_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public BoxedPDF_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new BoxedPDF_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new BoxedPDF_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule BoxedPDF ****************/
+
+
+/************ begin Rule ContinuousPDF_Impl ****************
+ *
+ * ContinuousPDF_Impl returns functions::ContinuousPDF:
+ * 	{functions::ContinuousPDF} "ContinuousPDF";
+ *
+ **/
+
+// {functions::ContinuousPDF} "ContinuousPDF"
+protected class ContinuousPDF_Impl_Group extends GroupToken {
+	
+	public ContinuousPDF_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getContinuousPDF_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousPDF_Impl_ContinuousPDFKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {functions::ContinuousPDF}
+protected class ContinuousPDF_Impl_ContinuousPDFAction_0 extends ActionToken  {
+
+	public ContinuousPDF_Impl_ContinuousPDFAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ContinuousPDF"
+protected class ContinuousPDF_Impl_ContinuousPDFKeyword_1 extends KeywordToken  {
+	
+	public ContinuousPDF_Impl_ContinuousPDFKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousPDF_Impl_ContinuousPDFAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ContinuousPDF_Impl ****************/
+
+
+/************ begin Rule NormalDistribution ****************
+ *
+ * NormalDistribution returns functions::NormalDistribution:
+ * 	"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}";
+ *
+ **/
+
+// "NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}"
+protected class NormalDistribution_Group extends GroupToken {
+	
+	public NormalDistribution_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getNormalDistributionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "NormalDistribution"
+protected class NormalDistribution_NormalDistributionKeyword_0 extends KeywordToken  {
+	
+	public NormalDistribution_NormalDistributionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class NormalDistribution_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public NormalDistribution_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_NormalDistributionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "mu"
+protected class NormalDistribution_MuKeyword_2 extends KeywordToken  {
+	
+	public NormalDistribution_MuKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getMuKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// mu=EBigDecimal
+protected class NormalDistribution_MuAssignment_3 extends AssignmentToken  {
+	
+	public NormalDistribution_MuAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getMuAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_MuKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("mu",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("mu");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "sigma"
+protected class NormalDistribution_SigmaKeyword_4 extends KeywordToken  {
+	
+	public NormalDistribution_SigmaKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_MuAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// sigma=EBigDecimal
+protected class NormalDistribution_SigmaAssignment_5 extends AssignmentToken  {
+	
+	public NormalDistribution_SigmaAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getSigmaAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_SigmaKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("sigma",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("sigma");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class NormalDistribution_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public NormalDistribution_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new NormalDistribution_SigmaAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule NormalDistribution ****************/
+
+
+/************ begin Rule ExponentialDistribution ****************
+ *
+ * ExponentialDistribution returns functions::ExponentialDistribution:
+ * 	"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}";
+ *
+ **/
+
+// "ExponentialDistribution" "{" "rate" rate=EBigDecimal "}"
+protected class ExponentialDistribution_Group extends GroupToken {
+	
+	public ExponentialDistribution_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExponentialDistributionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ExponentialDistribution"
+protected class ExponentialDistribution_ExponentialDistributionKeyword_0 extends KeywordToken  {
+	
+	public ExponentialDistribution_ExponentialDistributionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ExponentialDistribution_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ExponentialDistribution_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_ExponentialDistributionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "rate"
+protected class ExponentialDistribution_RateKeyword_2 extends KeywordToken  {
+	
+	public ExponentialDistribution_RateKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getRateKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// rate=EBigDecimal
+protected class ExponentialDistribution_RateAssignment_3 extends AssignmentToken  {
+	
+	public ExponentialDistribution_RateAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getRateAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_RateKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("rate",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("rate");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ExponentialDistribution_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ExponentialDistribution_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExponentialDistribution_RateAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExponentialDistribution ****************/
+
+
+/************ begin Rule Sample ****************
+ *
+ * Sample returns functions::Sample:
+ * 	"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}";
+ *
+ **/
+
+// "Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}"
+protected class Sample_Group extends GroupToken {
+	
+	public Sample_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSampleAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSampleRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Sample"
+protected class Sample_SampleKeyword_0 extends KeywordToken  {
+	
+	public Sample_SampleKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getSampleKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class Sample_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public Sample_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_SampleKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "probability"
+protected class Sample_ProbabilityKeyword_2 extends KeywordToken  {
+	
+	public Sample_ProbabilityKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getProbabilityKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// probability=EBigDecimal
+protected class Sample_ProbabilityAssignment_3 extends AssignmentToken  {
+	
+	public Sample_ProbabilityAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSampleAccess().getProbabilityAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ProbabilityKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("probability",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("probability");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "value"
+protected class Sample_ValueKeyword_4 extends KeywordToken  {
+	
+	public Sample_ValueKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getValueKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ProbabilityAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// value=[ecore::EObject|EString]
+protected class Sample_ValueAssignment_5 extends AssignmentToken  {
+	
+	public Sample_ValueAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSampleAccess().getValueAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ValueKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class Sample_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public Sample_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Sample_ValueAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule Sample ****************/
+
+
+/************ begin Rule EObject ****************
+ *
+ * EObject returns ecore::EObject:
+ * 	{ecore::EObject} "EObject";
+ *
+ **/
+
+// {ecore::EObject} "EObject"
+protected class EObject_Group extends GroupToken {
+	
+	public EObject_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getEObjectAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new EObject_EObjectKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getEObjectAccess().getEObjectAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {ecore::EObject}
+protected class EObject_EObjectAction_0 extends ActionToken  {
+
+	public EObject_EObjectAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getEObjectAccess().getEObjectAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "EObject"
+protected class EObject_EObjectKeyword_1 extends KeywordToken  {
+	
+	public EObject_EObjectKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getEObjectAccess().getEObjectKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new EObject_EObjectAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule EObject ****************/
+
+
+
+/************ begin Rule ContinuousSample ****************
+ *
+ * ContinuousSample returns functions::ContinuousSample:
+ * 	"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}";
+ *
+ **/
+
+// "ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}"
+protected class ContinuousSample_Group extends GroupToken {
+	
+	public ContinuousSample_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getContinuousSampleRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ContinuousSample"
+protected class ContinuousSample_ContinuousSampleKeyword_0 extends KeywordToken  {
+	
+	public ContinuousSample_ContinuousSampleKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ContinuousSample_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ContinuousSample_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ContinuousSampleKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "value"
+protected class ContinuousSample_ValueKeyword_2 extends KeywordToken  {
+	
+	public ContinuousSample_ValueKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getValueKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// value=EBigDecimal
+protected class ContinuousSample_ValueAssignment_3 extends AssignmentToken  {
+	
+	public ContinuousSample_ValueAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getValueAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ValueKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("value",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("value");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "probability"
+protected class ContinuousSample_ProbabilityKeyword_4 extends KeywordToken  {
+	
+	public ContinuousSample_ProbabilityKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ValueAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// probability=EBigDecimal
+protected class ContinuousSample_ProbabilityAssignment_5 extends AssignmentToken  {
+	
+	public ContinuousSample_ProbabilityAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getProbabilityAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ProbabilityKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("probability",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("probability");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ContinuousSample_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public ContinuousSample_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ContinuousSample_ProbabilityAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ContinuousSample ****************/
+
+
+/************ begin Rule LoopIterationCountDistribution ****************
+ *
+ * LoopIterationCountDistribution returns servicebehavior::LoopIterationCountDistribution:
+ * 	"LoopIterationCountDistribution" "{" "loopIterationCountDistribution"
+ * 	loopIterationCountDistribution=[functions::RandomVariable|EString] "}";
+ *
+ **/
+
+// "LoopIterationCountDistribution" "{" "loopIterationCountDistribution"
+// loopIterationCountDistribution=[functions::RandomVariable|EString] "}"
+protected class LoopIterationCountDistribution_Group extends GroupToken {
+	
+	public LoopIterationCountDistribution_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getLoopIterationCountDistributionAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopIterationCountDistribution_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getLoopIterationCountDistributionRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "LoopIterationCountDistribution"
+protected class LoopIterationCountDistribution_LoopIterationCountDistributionKeyword_0 extends KeywordToken  {
+	
+	public LoopIterationCountDistribution_LoopIterationCountDistributionKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class LoopIterationCountDistribution_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public LoopIterationCountDistribution_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopIterationCountDistributionAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopIterationCountDistribution_LoopIterationCountDistributionKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "loopIterationCountDistribution"
+protected class LoopIterationCountDistribution_LoopIterationCountDistributionKeyword_2 extends KeywordToken  {
+	
+	public LoopIterationCountDistribution_LoopIterationCountDistributionKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopIterationCountDistribution_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// loopIterationCountDistribution=[functions::RandomVariable|EString]
+protected class LoopIterationCountDistribution_LoopIterationCountDistributionAssignment_3 extends AssignmentToken  {
+	
+	public LoopIterationCountDistribution_LoopIterationCountDistributionAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopIterationCountDistribution_LoopIterationCountDistributionKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("loopIterationCountDistribution",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("loopIterationCountDistribution");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionRandomVariableCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionRandomVariableCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class LoopIterationCountDistribution_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public LoopIterationCountDistribution_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getLoopIterationCountDistributionAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new LoopIterationCountDistribution_LoopIterationCountDistributionAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule LoopIterationCountDistribution ****************/
+
+
+/************ begin Rule AssemblyContext ****************
+ *
+ * AssemblyContext returns repository::AssemblyContext:
+ * 	"AssemblyContext" id=EString "{" "name" name=EString "encapsulatedComponent"
+ * 	encapsulatedComponent=[repository::RepositoryComponent|EString] "}";
+ *
+ **/
+
+// "AssemblyContext" id=EString "{" "name" name=EString "encapsulatedComponent"
+// encapsulatedComponent=[repository::RepositoryComponent|EString] "}"
+protected class AssemblyContext_Group extends GroupToken {
+	
+	public AssemblyContext_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_RightCurlyBracketKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getAssemblyContextRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "AssemblyContext"
+protected class AssemblyContext_AssemblyContextKeyword_0 extends KeywordToken  {
+	
+	public AssemblyContext_AssemblyContextKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getAssemblyContextKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class AssemblyContext_IdAssignment_1 extends AssignmentToken  {
+	
+	public AssemblyContext_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_AssemblyContextKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getAssemblyContextAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getAssemblyContextAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class AssemblyContext_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public AssemblyContext_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class AssemblyContext_NameKeyword_3 extends KeywordToken  {
+	
+	public AssemblyContext_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class AssemblyContext_NameAssignment_4 extends AssignmentToken  {
+	
+	public AssemblyContext_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getAssemblyContextAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getAssemblyContextAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "encapsulatedComponent"
+protected class AssemblyContext_EncapsulatedComponentKeyword_5 extends KeywordToken  {
+	
+	public AssemblyContext_EncapsulatedComponentKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// encapsulatedComponent=[repository::RepositoryComponent|EString]
+protected class AssemblyContext_EncapsulatedComponentAssignment_6 extends AssignmentToken  {
+	
+	public AssemblyContext_EncapsulatedComponentAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_EncapsulatedComponentKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("encapsulatedComponent",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("encapsulatedComponent");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentRepositoryComponentCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentRepositoryComponentCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class AssemblyContext_RightCurlyBracketKeyword_7 extends KeywordToken  {
+	
+	public AssemblyContext_RightCurlyBracketKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyContextAccess().getRightCurlyBracketKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyContext_EncapsulatedComponentAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule AssemblyContext ****************/
+
+
+/************ begin Rule AssemblyConnector ****************
+ *
+ * AssemblyConnector returns repository::AssemblyConnector:
+ * 	"AssemblyConnector" id=EString "{" "name" name=EString "requiredRole" requiredRole=[repository::RequiredRole|EString]
+ * 	"providedRole" providedRole=[repository::ProvidedRole|EString] "providingAssemblyContext"
+ * 	providingAssemblyContext=[repository::AssemblyContext|EString] "requiringAssemblyContext"
+ * 	requiringAssemblyContext=[repository::AssemblyContext|EString] "}";
+ *
+ **/
+
+// "AssemblyConnector" id=EString "{" "name" name=EString "requiredRole" requiredRole=[repository::RequiredRole|EString]
+// "providedRole" providedRole=[repository::ProvidedRole|EString] "providingAssemblyContext"
+// providingAssemblyContext=[repository::AssemblyContext|EString] "requiringAssemblyContext"
+// requiringAssemblyContext=[repository::AssemblyContext|EString] "}"
+protected class AssemblyConnector_Group extends GroupToken {
+	
+	public AssemblyConnector_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_RightCurlyBracketKeyword_13(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getAssemblyConnectorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "AssemblyConnector"
+protected class AssemblyConnector_AssemblyConnectorKeyword_0 extends KeywordToken  {
+	
+	public AssemblyConnector_AssemblyConnectorKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getAssemblyConnectorKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class AssemblyConnector_IdAssignment_1 extends AssignmentToken  {
+	
+	public AssemblyConnector_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_AssemblyConnectorKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getAssemblyConnectorAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getAssemblyConnectorAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class AssemblyConnector_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public AssemblyConnector_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class AssemblyConnector_NameKeyword_3 extends KeywordToken  {
+	
+	public AssemblyConnector_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class AssemblyConnector_NameAssignment_4 extends AssignmentToken  {
+	
+	public AssemblyConnector_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getAssemblyConnectorAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getAssemblyConnectorAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "requiredRole"
+protected class AssemblyConnector_RequiredRoleKeyword_5 extends KeywordToken  {
+	
+	public AssemblyConnector_RequiredRoleKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getRequiredRoleKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRole=[repository::RequiredRole|EString]
+protected class AssemblyConnector_RequiredRoleAssignment_6 extends AssignmentToken  {
+	
+	public AssemblyConnector_RequiredRoleAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getRequiredRoleAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_RequiredRoleKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorAccess().getRequiredRoleRequiredRoleCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAssemblyConnectorAccess().getRequiredRoleRequiredRoleCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "providedRole"
+protected class AssemblyConnector_ProvidedRoleKeyword_7 extends KeywordToken  {
+	
+	public AssemblyConnector_ProvidedRoleKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getProvidedRoleKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_RequiredRoleAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providedRole=[repository::ProvidedRole|EString]
+protected class AssemblyConnector_ProvidedRoleAssignment_8 extends AssignmentToken  {
+	
+	public AssemblyConnector_ProvidedRoleAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getProvidedRoleAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_ProvidedRoleKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providedRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providedRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorAccess().getProvidedRoleProvidedRoleCrossReference_8_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAssemblyConnectorAccess().getProvidedRoleProvidedRoleCrossReference_8_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "providingAssemblyContext"
+protected class AssemblyConnector_ProvidingAssemblyContextKeyword_9 extends KeywordToken  {
+	
+	public AssemblyConnector_ProvidingAssemblyContextKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_ProvidedRoleAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// providingAssemblyContext=[repository::AssemblyContext|EString]
+protected class AssemblyConnector_ProvidingAssemblyContextAssignment_10 extends AssignmentToken  {
+	
+	public AssemblyConnector_ProvidingAssemblyContextAssignment_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextAssignment_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_ProvidingAssemblyContextKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("providingAssemblyContext",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("providingAssemblyContext");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextAssemblyContextCrossReference_10_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextAssemblyContextCrossReference_10_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "requiringAssemblyContext"
+protected class AssemblyConnector_RequiringAssemblyContextKeyword_11 extends KeywordToken  {
+	
+	public AssemblyConnector_RequiringAssemblyContextKeyword_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextKeyword_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_ProvidingAssemblyContextAssignment_10(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiringAssemblyContext=[repository::AssemblyContext|EString]
+protected class AssemblyConnector_RequiringAssemblyContextAssignment_12 extends AssignmentToken  {
+	
+	public AssemblyConnector_RequiringAssemblyContextAssignment_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextAssignment_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_RequiringAssemblyContextKeyword_11(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiringAssemblyContext",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiringAssemblyContext");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextAssemblyContextCrossReference_12_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextAssemblyContextCrossReference_12_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class AssemblyConnector_RightCurlyBracketKeyword_13 extends KeywordToken  {
+	
+	public AssemblyConnector_RightCurlyBracketKeyword_13(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getAssemblyConnectorAccess().getRightCurlyBracketKeyword_13();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new AssemblyConnector_RequiringAssemblyContextAssignment_12(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule AssemblyConnector ****************/
+
+
+/************ begin Rule ProvidedDelegationConnector ****************
+ *
+ * ProvidedDelegationConnector returns repository::ProvidedDelegationConnector:
+ * 	"ProvidedDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+ * 	assemblyContext=[repository::AssemblyContext|EString] "innerProvidedRole"
+ * 	innerProvidedRole=[repository::ProvidedRole|EString] "outerProvidedRole"
+ * 	outerProvidedRole=[repository::ProvidedRole|EString] "}";
+ *
+ **/
+
+// "ProvidedDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+// assemblyContext=[repository::AssemblyContext|EString] "innerProvidedRole"
+// innerProvidedRole=[repository::ProvidedRole|EString] "outerProvidedRole"
+// outerProvidedRole=[repository::ProvidedRole|EString] "}"
+protected class ProvidedDelegationConnector_Group extends GroupToken {
+	
+	public ProvidedDelegationConnector_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_RightCurlyBracketKeyword_11(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getProvidedDelegationConnectorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ProvidedDelegationConnector"
+protected class ProvidedDelegationConnector_ProvidedDelegationConnectorKeyword_0 extends KeywordToken  {
+	
+	public ProvidedDelegationConnector_ProvidedDelegationConnectorKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getProvidedDelegationConnectorKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class ProvidedDelegationConnector_IdAssignment_1 extends AssignmentToken  {
+	
+	public ProvidedDelegationConnector_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_ProvidedDelegationConnectorKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProvidedDelegationConnectorAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProvidedDelegationConnectorAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class ProvidedDelegationConnector_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ProvidedDelegationConnector_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class ProvidedDelegationConnector_NameKeyword_3 extends KeywordToken  {
+	
+	public ProvidedDelegationConnector_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class ProvidedDelegationConnector_NameAssignment_4 extends AssignmentToken  {
+	
+	public ProvidedDelegationConnector_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getProvidedDelegationConnectorAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getProvidedDelegationConnectorAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "assemblyContext"
+protected class ProvidedDelegationConnector_AssemblyContextKeyword_5 extends KeywordToken  {
+	
+	public ProvidedDelegationConnector_AssemblyContextKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyContext=[repository::AssemblyContext|EString]
+protected class ProvidedDelegationConnector_AssemblyContextAssignment_6 extends AssignmentToken  {
+	
+	public ProvidedDelegationConnector_AssemblyContextAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_AssemblyContextKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyContext",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyContext");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "innerProvidedRole"
+protected class ProvidedDelegationConnector_InnerProvidedRoleKeyword_7 extends KeywordToken  {
+	
+	public ProvidedDelegationConnector_InnerProvidedRoleKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_AssemblyContextAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// innerProvidedRole=[repository::ProvidedRole|EString]
+protected class ProvidedDelegationConnector_InnerProvidedRoleAssignment_8 extends AssignmentToken  {
+	
+	public ProvidedDelegationConnector_InnerProvidedRoleAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_InnerProvidedRoleKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("innerProvidedRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("innerProvidedRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleProvidedRoleCrossReference_8_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleProvidedRoleCrossReference_8_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "outerProvidedRole"
+protected class ProvidedDelegationConnector_OuterProvidedRoleKeyword_9 extends KeywordToken  {
+	
+	public ProvidedDelegationConnector_OuterProvidedRoleKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_InnerProvidedRoleAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// outerProvidedRole=[repository::ProvidedRole|EString]
+protected class ProvidedDelegationConnector_OuterProvidedRoleAssignment_10 extends AssignmentToken  {
+	
+	public ProvidedDelegationConnector_OuterProvidedRoleAssignment_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleAssignment_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_OuterProvidedRoleKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("outerProvidedRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("outerProvidedRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleProvidedRoleCrossReference_10_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleProvidedRoleCrossReference_10_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ProvidedDelegationConnector_RightCurlyBracketKeyword_11 extends KeywordToken  {
+	
+	public ProvidedDelegationConnector_RightCurlyBracketKeyword_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getProvidedDelegationConnectorAccess().getRightCurlyBracketKeyword_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ProvidedDelegationConnector_OuterProvidedRoleAssignment_10(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ProvidedDelegationConnector ****************/
+
+
+/************ begin Rule RequiredDelegationConnector ****************
+ *
+ * RequiredDelegationConnector returns repository::RequiredDelegationConnector:
+ * 	"RequiredDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+ * 	assemblyContext=[repository::AssemblyContext|EString] "innerRequiredRole"
+ * 	innerRequiredRole=[repository::RequiredRole|EString] "outerRequiredRole"
+ * 	outerRequiredRole=[repository::RequiredRole|EString] "}";
+ *
+ **/
+
+// "RequiredDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+// assemblyContext=[repository::AssemblyContext|EString] "innerRequiredRole"
+// innerRequiredRole=[repository::RequiredRole|EString] "outerRequiredRole"
+// outerRequiredRole=[repository::RequiredRole|EString] "}"
+protected class RequiredDelegationConnector_Group extends GroupToken {
+	
+	public RequiredDelegationConnector_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_RightCurlyBracketKeyword_11(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getRequiredDelegationConnectorRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "RequiredDelegationConnector"
+protected class RequiredDelegationConnector_RequiredDelegationConnectorKeyword_0 extends KeywordToken  {
+	
+	public RequiredDelegationConnector_RequiredDelegationConnectorKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getRequiredDelegationConnectorKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// id=EString
+protected class RequiredDelegationConnector_IdAssignment_1 extends AssignmentToken  {
+	
+	public RequiredDelegationConnector_IdAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getIdAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_RequiredDelegationConnectorKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("id",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("id");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRequiredDelegationConnectorAccess().getIdEStringParserRuleCall_1_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRequiredDelegationConnectorAccess().getIdEStringParserRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "{"
+protected class RequiredDelegationConnector_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public RequiredDelegationConnector_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_IdAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "name"
+protected class RequiredDelegationConnector_NameKeyword_3 extends KeywordToken  {
+	
+	public RequiredDelegationConnector_NameKeyword_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getNameKeyword_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// name=EString
+protected class RequiredDelegationConnector_NameAssignment_4 extends AssignmentToken  {
+	
+	public RequiredDelegationConnector_NameAssignment_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getNameAssignment_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_NameKeyword_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("name",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("name");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getRequiredDelegationConnectorAccess().getNameEStringParserRuleCall_4_0(), value, null)) {
+			type = AssignmentType.DATATYPE_RULE_CALL;
+			element = grammarAccess.getRequiredDelegationConnectorAccess().getNameEStringParserRuleCall_4_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// "assemblyContext"
+protected class RequiredDelegationConnector_AssemblyContextKeyword_5 extends KeywordToken  {
+	
+	public RequiredDelegationConnector_AssemblyContextKeyword_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextKeyword_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_NameAssignment_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblyContext=[repository::AssemblyContext|EString]
+protected class RequiredDelegationConnector_AssemblyContextAssignment_6 extends AssignmentToken  {
+	
+	public RequiredDelegationConnector_AssemblyContextAssignment_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextAssignment_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_AssemblyContextKeyword_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblyContext",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblyContext");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "innerRequiredRole"
+protected class RequiredDelegationConnector_InnerRequiredRoleKeyword_7 extends KeywordToken  {
+	
+	public RequiredDelegationConnector_InnerRequiredRoleKeyword_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleKeyword_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_AssemblyContextAssignment_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// innerRequiredRole=[repository::RequiredRole|EString]
+protected class RequiredDelegationConnector_InnerRequiredRoleAssignment_8 extends AssignmentToken  {
+	
+	public RequiredDelegationConnector_InnerRequiredRoleAssignment_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleAssignment_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_InnerRequiredRoleKeyword_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("innerRequiredRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("innerRequiredRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleRequiredRoleCrossReference_8_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleRequiredRoleCrossReference_8_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "outerRequiredRole"
+protected class RequiredDelegationConnector_OuterRequiredRoleKeyword_9 extends KeywordToken  {
+	
+	public RequiredDelegationConnector_OuterRequiredRoleKeyword_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleKeyword_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_InnerRequiredRoleAssignment_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// outerRequiredRole=[repository::RequiredRole|EString]
+protected class RequiredDelegationConnector_OuterRequiredRoleAssignment_10 extends AssignmentToken  {
+	
+	public RequiredDelegationConnector_OuterRequiredRoleAssignment_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleAssignment_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_OuterRequiredRoleKeyword_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("outerRequiredRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("outerRequiredRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleRequiredRoleCrossReference_10_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleRequiredRoleCrossReference_10_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class RequiredDelegationConnector_RightCurlyBracketKeyword_11 extends KeywordToken  {
+	
+	public RequiredDelegationConnector_RightCurlyBracketKeyword_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getRequiredDelegationConnectorAccess().getRightCurlyBracketKeyword_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new RequiredDelegationConnector_OuterRequiredRoleAssignment_10(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule RequiredDelegationConnector ****************/
+
+
+/************ begin Rule ExternalCall_Impl ****************
+ *
+ * ExternalCall_Impl returns servicebehavior::ExternalCall:
+ * 	"ExternalCall" "{" "signature" signature=[repository::Signature|EString] "requiredRole"
+ * 	requiredRole=[repository::RequiredRole|EString] "}";
+ *
+ **/
+
+// "ExternalCall" "{" "signature" signature=[repository::Signature|EString] "requiredRole"
+// requiredRole=[repository::RequiredRole|EString] "}"
+protected class ExternalCall_Impl_Group extends GroupToken {
+	
+	public ExternalCall_Impl_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCall_ImplRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ExternalCall"
+protected class ExternalCall_Impl_ExternalCallKeyword_0 extends KeywordToken  {
+	
+	public ExternalCall_Impl_ExternalCallKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getExternalCallKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ExternalCall_Impl_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ExternalCall_Impl_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_ExternalCallKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "signature"
+protected class ExternalCall_Impl_SignatureKeyword_2 extends KeywordToken  {
+	
+	public ExternalCall_Impl_SignatureKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getSignatureKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// signature=[repository::Signature|EString]
+protected class ExternalCall_Impl_SignatureAssignment_3 extends AssignmentToken  {
+	
+	public ExternalCall_Impl_SignatureAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getSignatureAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_SignatureKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("signature",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("signature");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCall_ImplAccess().getSignatureSignatureCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCall_ImplAccess().getSignatureSignatureCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "requiredRole"
+protected class ExternalCall_Impl_RequiredRoleKeyword_4 extends KeywordToken  {
+	
+	public ExternalCall_Impl_RequiredRoleKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getRequiredRoleKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_SignatureAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// requiredRole=[repository::RequiredRole|EString]
+protected class ExternalCall_Impl_RequiredRoleAssignment_5 extends AssignmentToken  {
+	
+	public ExternalCall_Impl_RequiredRoleAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getRequiredRoleAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_RequiredRoleKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("requiredRole",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("requiredRole");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCall_ImplAccess().getRequiredRoleRequiredRoleCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getExternalCall_ImplAccess().getRequiredRoleRequiredRoleCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class ExternalCall_Impl_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public ExternalCall_Impl_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCall_ImplAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Impl_RequiredRoleAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExternalCall_Impl ****************/
+
+
+/************ begin Rule ExternalCallFrequency ****************
+ *
+ * ExternalCallFrequency returns servicebehavior::ExternalCallFrequency:
+ * 	"ExternalCallFrequency" "{" "externalCall" externalCall=ExternalCall "frequency" frequency=CallFrequency "}";
+ *
+ **/
+
+// "ExternalCallFrequency" "{" "externalCall" externalCall=ExternalCall "frequency" frequency=CallFrequency "}"
+protected class ExternalCallFrequency_Group extends GroupToken {
+	
+	public ExternalCallFrequency_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallFrequency_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExternalCallFrequencyRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "ExternalCallFrequency"
+protected class ExternalCallFrequency_ExternalCallFrequencyKeyword_0 extends KeywordToken  {
+	
+	public ExternalCallFrequency_ExternalCallFrequencyKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getExternalCallFrequencyKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class ExternalCallFrequency_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public ExternalCallFrequency_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallFrequency_ExternalCallFrequencyKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "externalCall"
+protected class ExternalCallFrequency_ExternalCallKeyword_2 extends KeywordToken  {
+	
+	public ExternalCallFrequency_ExternalCallKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getExternalCallKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallFrequency_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// externalCall=ExternalCall
+protected class ExternalCallFrequency_ExternalCallAssignment_3 extends AssignmentToken  {
+	
+	public ExternalCallFrequency_ExternalCallAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getExternalCallAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCall_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("externalCall",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("externalCall");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getExternalCallRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getExternalCallFrequencyAccess().getExternalCallExternalCallParserRuleCall_3_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ExternalCallFrequency_ExternalCallKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "frequency"
+protected class ExternalCallFrequency_FrequencyKeyword_4 extends KeywordToken  {
+	
+	public ExternalCallFrequency_FrequencyKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getFrequencyKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallFrequency_ExternalCallAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// frequency=CallFrequency
+protected class ExternalCallFrequency_FrequencyAssignment_5 extends AssignmentToken  {
+	
+	public ExternalCallFrequency_FrequencyAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getFrequencyAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CallFrequency_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("frequency",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("frequency");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCallFrequencyRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getExternalCallFrequencyAccess().getFrequencyCallFrequencyParserRuleCall_5_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new ExternalCallFrequency_FrequencyKeyword_4(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class ExternalCallFrequency_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public ExternalCallFrequency_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExternalCallFrequencyAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExternalCallFrequency_FrequencyAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExternalCallFrequency ****************/
+
+
+/************ begin Rule CallFrequency ****************
+ *
+ * CallFrequency returns servicebehavior::CallFrequency:
+ * 	"CallFrequency" "{" "frequency" frequency=[functions::RandomVariable|EString] "}";
+ *
+ **/
+
+// "CallFrequency" "{" "frequency" frequency=[functions::RandomVariable|EString] "}"
+protected class CallFrequency_Group extends GroupToken {
+	
+	public CallFrequency_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCallFrequencyAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CallFrequency_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCallFrequencyRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CallFrequency"
+protected class CallFrequency_CallFrequencyKeyword_0 extends KeywordToken  {
+	
+	public CallFrequency_CallFrequencyKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCallFrequencyAccess().getCallFrequencyKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class CallFrequency_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public CallFrequency_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCallFrequencyAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CallFrequency_CallFrequencyKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "frequency"
+protected class CallFrequency_FrequencyKeyword_2 extends KeywordToken  {
+	
+	public CallFrequency_FrequencyKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCallFrequencyAccess().getFrequencyKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CallFrequency_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// frequency=[functions::RandomVariable|EString]
+protected class CallFrequency_FrequencyAssignment_3 extends AssignmentToken  {
+	
+	public CallFrequency_FrequencyAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCallFrequencyAccess().getFrequencyAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CallFrequency_FrequencyKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("frequency",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("frequency");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCallFrequencyAccess().getFrequencyRandomVariableCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCallFrequencyAccess().getFrequencyRandomVariableCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class CallFrequency_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public CallFrequency_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCallFrequencyAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CallFrequency_FrequencyAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CallFrequency ****************/
+
+
+/************ begin Rule DependencyRelationship ****************
+ *
+ * DependencyRelationship:
+ * 	"DependencyRelationship" "{" "surroundingEntity"
+ * 	surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "influencedVariable"
+ * 	influencedVariable=[InfluencedVariable|EString] "influencingParameter"
+ * 	influencingParameter=[InfluencingParameter|EString] "}";
+ *
+ **/
+
+// "DependencyRelationship" "{" "surroundingEntity"
+// surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "influencedVariable"
+// influencedVariable=[InfluencedVariable|EString] "influencingParameter"
+// influencingParameter=[InfluencingParameter|EString] "}"
+protected class DependencyRelationship_Group extends GroupToken {
+	
+	public DependencyRelationship_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_RightCurlyBracketKeyword_8(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getDependencyRelationshipRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "DependencyRelationship"
+protected class DependencyRelationship_DependencyRelationshipKeyword_0 extends KeywordToken  {
+	
+	public DependencyRelationship_DependencyRelationshipKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getDependencyRelationshipKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class DependencyRelationship_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public DependencyRelationship_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_DependencyRelationshipKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "surroundingEntity"
+protected class DependencyRelationship_SurroundingEntityKeyword_2 extends KeywordToken  {
+	
+	public DependencyRelationship_SurroundingEntityKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+protected class DependencyRelationship_SurroundingEntityAssignment_3 extends AssignmentToken  {
+	
+	public DependencyRelationship_SurroundingEntityAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_SurroundingEntityKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("surroundingEntity",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("surroundingEntity");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "influencedVariable"
+protected class DependencyRelationship_InfluencedVariableKeyword_4 extends KeywordToken  {
+	
+	public DependencyRelationship_InfluencedVariableKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_SurroundingEntityAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencedVariable=[InfluencedVariable|EString]
+protected class DependencyRelationship_InfluencedVariableAssignment_5 extends AssignmentToken  {
+	
+	public DependencyRelationship_InfluencedVariableAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_InfluencedVariableKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencedVariable",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencedVariable");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableInfluencedVariableCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableInfluencedVariableCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "influencingParameter"
+protected class DependencyRelationship_InfluencingParameterKeyword_6 extends KeywordToken  {
+	
+	public DependencyRelationship_InfluencingParameterKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_InfluencedVariableAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// influencingParameter=[InfluencingParameter|EString]
+protected class DependencyRelationship_InfluencingParameterAssignment_7 extends AssignmentToken  {
+	
+	public DependencyRelationship_InfluencingParameterAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterAssignment_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_InfluencingParameterKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("influencingParameter",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("influencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterInfluencingParameterCrossReference_7_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterInfluencingParameterCrossReference_7_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "}"
+protected class DependencyRelationship_RightCurlyBracketKeyword_8 extends KeywordToken  {
+	
+	public DependencyRelationship_RightCurlyBracketKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getDependencyRelationshipAccess().getRightCurlyBracketKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new DependencyRelationship_InfluencingParameterAssignment_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule DependencyRelationship ****************/
+
+
+/************ begin Rule CorrelationRelationship ****************
+ *
+ * CorrelationRelationship:
+ * 	"CorrelationRelationship" "{" "surroundingEntity"
+ * 	surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "leftInfluencingParameter"
+ * 	leftInfluencingParameter=[InfluencingParameter|EString] "rightInfluencingParameter"
+ * 	rightInfluencingParameter=[InfluencingParameter|EString] "leftComponentInstanceReference"
+ * 	leftComponentInstanceReference=ComponentInstanceReference "rightComponentInstanceReference"
+ * 	rightComponentInstanceReference=ComponentInstanceReference "}";
+ *
+ **/
+
+// "CorrelationRelationship" "{" "surroundingEntity"
+// surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "leftInfluencingParameter"
+// leftInfluencingParameter=[InfluencingParameter|EString] "rightInfluencingParameter"
+// rightInfluencingParameter=[InfluencingParameter|EString] "leftComponentInstanceReference"
+// leftComponentInstanceReference=ComponentInstanceReference "rightComponentInstanceReference"
+// rightComponentInstanceReference=ComponentInstanceReference "}"
+protected class CorrelationRelationship_Group extends GroupToken {
+	
+	public CorrelationRelationship_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_RightCurlyBracketKeyword_12(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getCorrelationRelationshipRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "CorrelationRelationship"
+protected class CorrelationRelationship_CorrelationRelationshipKeyword_0 extends KeywordToken  {
+	
+	public CorrelationRelationship_CorrelationRelationshipKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getCorrelationRelationshipKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// "{"
+protected class CorrelationRelationship_LeftCurlyBracketKeyword_1 extends KeywordToken  {
+	
+	public CorrelationRelationship_LeftCurlyBracketKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getLeftCurlyBracketKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_CorrelationRelationshipKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "surroundingEntity"
+protected class CorrelationRelationship_SurroundingEntityKeyword_2 extends KeywordToken  {
+	
+	public CorrelationRelationship_SurroundingEntityKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_LeftCurlyBracketKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+protected class CorrelationRelationship_SurroundingEntityAssignment_3 extends AssignmentToken  {
+	
+	public CorrelationRelationship_SurroundingEntityAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityAssignment_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_SurroundingEntityKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("surroundingEntity",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("surroundingEntity");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "leftInfluencingParameter"
+protected class CorrelationRelationship_LeftInfluencingParameterKeyword_4 extends KeywordToken  {
+	
+	public CorrelationRelationship_LeftInfluencingParameterKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_SurroundingEntityAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// leftInfluencingParameter=[InfluencingParameter|EString]
+protected class CorrelationRelationship_LeftInfluencingParameterAssignment_5 extends AssignmentToken  {
+	
+	public CorrelationRelationship_LeftInfluencingParameterAssignment_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterAssignment_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_LeftInfluencingParameterKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("leftInfluencingParameter",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("leftInfluencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterInfluencingParameterCrossReference_5_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterInfluencingParameterCrossReference_5_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "rightInfluencingParameter"
+protected class CorrelationRelationship_RightInfluencingParameterKeyword_6 extends KeywordToken  {
+	
+	public CorrelationRelationship_RightInfluencingParameterKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_LeftInfluencingParameterAssignment_5(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// rightInfluencingParameter=[InfluencingParameter|EString]
+protected class CorrelationRelationship_RightInfluencingParameterAssignment_7 extends AssignmentToken  {
+	
+	public CorrelationRelationship_RightInfluencingParameterAssignment_7(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterAssignment_7();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_RightInfluencingParameterKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("rightInfluencingParameter",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("rightInfluencingParameter");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterInfluencingParameterCrossReference_7_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterInfluencingParameterCrossReference_7_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// "leftComponentInstanceReference"
+protected class CorrelationRelationship_LeftComponentInstanceReferenceKeyword_8 extends KeywordToken  {
+	
+	public CorrelationRelationship_LeftComponentInstanceReferenceKeyword_8(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getLeftComponentInstanceReferenceKeyword_8();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_RightInfluencingParameterAssignment_7(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// leftComponentInstanceReference=ComponentInstanceReference
+protected class CorrelationRelationship_LeftComponentInstanceReferenceAssignment_9 extends AssignmentToken  {
+	
+	public CorrelationRelationship_LeftComponentInstanceReferenceAssignment_9(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getLeftComponentInstanceReferenceAssignment_9();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("leftComponentInstanceReference",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("leftComponentInstanceReference");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInstanceReferenceRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCorrelationRelationshipAccess().getLeftComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_9_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CorrelationRelationship_LeftComponentInstanceReferenceKeyword_8(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "rightComponentInstanceReference"
+protected class CorrelationRelationship_RightComponentInstanceReferenceKeyword_10 extends KeywordToken  {
+	
+	public CorrelationRelationship_RightComponentInstanceReferenceKeyword_10(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getRightComponentInstanceReferenceKeyword_10();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_LeftComponentInstanceReferenceAssignment_9(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// rightComponentInstanceReference=ComponentInstanceReference
+protected class CorrelationRelationship_RightComponentInstanceReferenceAssignment_11 extends AssignmentToken  {
+	
+	public CorrelationRelationship_RightComponentInstanceReferenceAssignment_11(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getRightComponentInstanceReferenceAssignment_11();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("rightComponentInstanceReference",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("rightComponentInstanceReference");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInstanceReferenceRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getCorrelationRelationshipAccess().getRightComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_11_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new CorrelationRelationship_RightComponentInstanceReferenceKeyword_10(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// "}"
+protected class CorrelationRelationship_RightCurlyBracketKeyword_12 extends KeywordToken  {
+	
+	public CorrelationRelationship_RightCurlyBracketKeyword_12(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getCorrelationRelationshipAccess().getRightCurlyBracketKeyword_12();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new CorrelationRelationship_RightComponentInstanceReferenceAssignment_11(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule CorrelationRelationship ****************/
+
+
+/************ begin Rule InfluencedVariable ****************
+ *
+ * InfluencedVariable:
+ * 	{InfluencedVariable} "InfluencedVariable" "{" ("controlFlowVariable"
+ * 	controlFlowVariable=[ControlFlowSpecification|EString])? ("resourceDemand"
+ * 	resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])? ("responseTime"
+ * 	responseTime=[servicebehavior::ResponseTimeSpecification|EString])? "}";
+ *
+ **/
+
+// {InfluencedVariable} "InfluencedVariable" "{" ("controlFlowVariable"
+// controlFlowVariable=[ControlFlowSpecification|EString])? ("resourceDemand"
+// resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])? ("responseTime"
+// responseTime=[servicebehavior::ResponseTimeSpecification|EString])? "}"
+protected class InfluencedVariable_Group extends GroupToken {
+	
+	public InfluencedVariable_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_RightCurlyBracketKeyword_6(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getInfluencedVariableAccess().getInfluencedVariableAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {InfluencedVariable}
+protected class InfluencedVariable_InfluencedVariableAction_0 extends ActionToken  {
+
+	public InfluencedVariable_InfluencedVariableAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getInfluencedVariableAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "InfluencedVariable"
+protected class InfluencedVariable_InfluencedVariableKeyword_1 extends KeywordToken  {
+	
+	public InfluencedVariable_InfluencedVariableKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getInfluencedVariableKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_InfluencedVariableAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class InfluencedVariable_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public InfluencedVariable_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_InfluencedVariableKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("controlFlowVariable" controlFlowVariable=[ControlFlowSpecification|EString])?
+protected class InfluencedVariable_Group_3 extends GroupToken {
+	
+	public InfluencedVariable_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_ControlFlowVariableAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "controlFlowVariable"
+protected class InfluencedVariable_ControlFlowVariableKeyword_3_0 extends KeywordToken  {
+	
+	public InfluencedVariable_ControlFlowVariableKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getControlFlowVariableKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// controlFlowVariable=[ControlFlowSpecification|EString]
+protected class InfluencedVariable_ControlFlowVariableAssignment_3_1 extends AssignmentToken  {
+	
+	public InfluencedVariable_ControlFlowVariableAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getControlFlowVariableAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_ControlFlowVariableKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("controlFlowVariable",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("controlFlowVariable");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencedVariableAccess().getControlFlowVariableControlFlowSpecificationCrossReference_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInfluencedVariableAccess().getControlFlowVariableControlFlowSpecificationCrossReference_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("resourceDemand" resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])?
+protected class InfluencedVariable_Group_4 extends GroupToken {
+	
+	public InfluencedVariable_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_ResourceDemandAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "resourceDemand"
+protected class InfluencedVariable_ResourceDemandKeyword_4_0 extends KeywordToken  {
+	
+	public InfluencedVariable_ResourceDemandKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getResourceDemandKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InfluencedVariable_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// resourceDemand=[servicebehavior::ResourceDemandSpecification|EString]
+protected class InfluencedVariable_ResourceDemandAssignment_4_1 extends AssignmentToken  {
+	
+	public InfluencedVariable_ResourceDemandAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getResourceDemandAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_ResourceDemandKeyword_4_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("resourceDemand",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("resourceDemand");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencedVariableAccess().getResourceDemandResourceDemandSpecificationCrossReference_4_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInfluencedVariableAccess().getResourceDemandResourceDemandSpecificationCrossReference_4_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ("responseTime" responseTime=[servicebehavior::ResponseTimeSpecification|EString])?
+protected class InfluencedVariable_Group_5 extends GroupToken {
+	
+	public InfluencedVariable_Group_5(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getGroup_5();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_ResponseTimeAssignment_5_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "responseTime"
+protected class InfluencedVariable_ResponseTimeKeyword_5_0 extends KeywordToken  {
+	
+	public InfluencedVariable_ResponseTimeKeyword_5_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getResponseTimeKeyword_5_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InfluencedVariable_Group_3(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new InfluencedVariable_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// responseTime=[servicebehavior::ResponseTimeSpecification|EString]
+protected class InfluencedVariable_ResponseTimeAssignment_5_1 extends AssignmentToken  {
+	
+	public InfluencedVariable_ResponseTimeAssignment_5_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getResponseTimeAssignment_5_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_ResponseTimeKeyword_5_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("responseTime",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("responseTime");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getInfluencedVariableAccess().getResponseTimeResponseTimeSpecificationCrossReference_5_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getInfluencedVariableAccess().getResponseTimeResponseTimeSpecificationCrossReference_5_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// "}"
+protected class InfluencedVariable_RightCurlyBracketKeyword_6 extends KeywordToken  {
+	
+	public InfluencedVariable_RightCurlyBracketKeyword_6(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getInfluencedVariableAccess().getRightCurlyBracketKeyword_6();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new InfluencedVariable_Group_5(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new InfluencedVariable_Group_4(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new InfluencedVariable_Group_3(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new InfluencedVariable_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 3, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule InfluencedVariable ****************/
+
+
+/************ begin Rule ComponentInstanceReference ****************
+ *
+ * ComponentInstanceReference:
+ * 	{ComponentInstanceReference} "ComponentInstanceReference" "{" ("assemblies" "("
+ * 	assemblies+=[repository::AssemblyContext|EString] ("," assemblies+=[repository::AssemblyContext|EString])* ")")? "}";
+ *
+ **/
+
+// {ComponentInstanceReference} "ComponentInstanceReference" "{" ("assemblies" "("
+// assemblies+=[repository::AssemblyContext|EString] ("," assemblies+=[repository::AssemblyContext|EString])* ")")? "}"
+protected class ComponentInstanceReference_Group extends GroupToken {
+	
+	public ComponentInstanceReference_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_RightCurlyBracketKeyword_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getComponentInstanceReferenceAccess().getComponentInstanceReferenceAction_0().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// {ComponentInstanceReference}
+protected class ComponentInstanceReference_ComponentInstanceReferenceAction_0 extends ActionToken  {
+
+	public ComponentInstanceReference_ComponentInstanceReferenceAction_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Action getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getComponentInstanceReferenceAction_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(!eObjectConsumer.isConsumed()) return null;
+		return eObjectConsumer;
+	}
+}
+
+// "ComponentInstanceReference"
+protected class ComponentInstanceReference_ComponentInstanceReferenceKeyword_1 extends KeywordToken  {
+	
+	public ComponentInstanceReference_ComponentInstanceReferenceKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getComponentInstanceReferenceKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_ComponentInstanceReferenceAction_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "{"
+protected class ComponentInstanceReference_LeftCurlyBracketKeyword_2 extends KeywordToken  {
+	
+	public ComponentInstanceReference_LeftCurlyBracketKeyword_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getLeftCurlyBracketKeyword_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_ComponentInstanceReferenceKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ("assemblies" "(" assemblies+=[repository::AssemblyContext|EString] (","
+// assemblies+=[repository::AssemblyContext|EString])* ")")?
+protected class ComponentInstanceReference_Group_3 extends GroupToken {
+	
+	public ComponentInstanceReference_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_RightParenthesisKeyword_3_4(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "assemblies"
+protected class ComponentInstanceReference_AssembliesKeyword_3_0 extends KeywordToken  {
+	
+	public ComponentInstanceReference_AssembliesKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getAssembliesKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "("
+protected class ComponentInstanceReference_LeftParenthesisKeyword_3_1 extends KeywordToken  {
+	
+	public ComponentInstanceReference_LeftParenthesisKeyword_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getLeftParenthesisKeyword_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_AssembliesKeyword_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblies+=[repository::AssemblyContext|EString]
+protected class ComponentInstanceReference_AssembliesAssignment_3_2 extends AssignmentToken  {
+	
+	public ComponentInstanceReference_AssembliesAssignment_3_2(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssignment_3_2();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_LeftParenthesisKeyword_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblies",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblies");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_2_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_2_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+// ("," assemblies+=[repository::AssemblyContext|EString])*
+protected class ComponentInstanceReference_Group_3_3 extends GroupToken {
+	
+	public ComponentInstanceReference_Group_3_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getGroup_3_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_AssembliesAssignment_3_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class ComponentInstanceReference_CommaKeyword_3_3_0 extends KeywordToken  {
+	
+	public ComponentInstanceReference_CommaKeyword_3_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getCommaKeyword_3_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ComponentInstanceReference_AssembliesAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// assemblies+=[repository::AssemblyContext|EString]
+protected class ComponentInstanceReference_AssembliesAssignment_3_3_1 extends AssignmentToken  {
+	
+	public ComponentInstanceReference_AssembliesAssignment_3_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssignment_3_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_CommaKeyword_3_3_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("assemblies",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("assemblies");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::CrossReferenceImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_3_1_0().getType().getClassifier())) {
+				type = AssignmentType.CROSS_REFERENCE;
+				element = grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_3_1_0(); 
+				return obj;
+			}
+		}
+		return null;
+	}
+
+}
+
+
+// ")"
+protected class ComponentInstanceReference_RightParenthesisKeyword_3_4 extends KeywordToken  {
+	
+	public ComponentInstanceReference_RightParenthesisKeyword_3_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getRightParenthesisKeyword_3_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_Group_3_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ComponentInstanceReference_AssembliesAssignment_3_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+// "}"
+protected class ComponentInstanceReference_RightCurlyBracketKeyword_4 extends KeywordToken  {
+	
+	public ComponentInstanceReference_RightCurlyBracketKeyword_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getComponentInstanceReferenceAccess().getRightCurlyBracketKeyword_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ComponentInstanceReference_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new ComponentInstanceReference_LeftCurlyBracketKeyword_2(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ComponentInstanceReference ****************/
+
+}
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/RepositoryDSLAntlrTokenFileProvider.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/RepositoryDSLAntlrTokenFileProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e09abe835d104ca8dd7d8d5fae764cfeb496843a
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/RepositoryDSLAntlrTokenFileProvider.java
@@ -0,0 +1,15 @@
+/*
+* generated by Xtext
+*/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class RepositoryDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.tokens");
+	}
+}
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/RepositoryDSLParser.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/RepositoryDSLParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b24622135fdf44b9cab7cd7ecc08f60a18ab00d
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/RepositoryDSLParser.java
@@ -0,0 +1,39 @@
+/*
+* generated by Xtext
+*/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services.RepositoryDSLGrammarAccess;
+
+public class RepositoryDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private RepositoryDSLGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal.InternalRepositoryDSLParser createParser(XtextTokenStream stream) {
+		return new edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal.InternalRepositoryDSLParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "Repository";
+	}
+	
+	public RepositoryDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(RepositoryDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g
new file mode 100644
index 0000000000000000000000000000000000000000..2b783ac64189428000314a2608d9e4e7c5543c44
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g
@@ -0,0 +1,8544 @@
+/*
+* generated by Xtext
+*/
+grammar InternalRepositoryDSL;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.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.parser.antlr.Lexer;
+}
+
+@parser::header {
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal; 
+
+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.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services.RepositoryDSLGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private RepositoryDSLGrammarAccess grammarAccess;
+ 	
+    public InternalRepositoryDSLParser(TokenStream input, RepositoryDSLGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "Repository";	
+   	}
+   	
+   	@Override
+   	protected RepositoryDSLGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleRepository
+entryRuleRepository returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRepositoryRule()); }
+	 iv_ruleRepository=ruleRepository 
+	 { $current=$iv_ruleRepository.current; } 
+	 EOF 
+;
+
+// Rule Repository
+ruleRepository returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Repository' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getRepositoryAccess().getRepositoryKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getRepositoryAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='datatypes' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getRepositoryAccess().getDatatypesKeyword_5_0());
+    }
+	otherlv_6='{' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getDatatypesDataTypeParserRuleCall_5_2_0()); 
+	    }
+		lv_datatypes_7_0=ruleDataType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		add(
+       			$current, 
+       			"datatypes",
+        		lv_datatypes_7_0, 
+        		"DataType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getRepositoryAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getDatatypesDataTypeParserRuleCall_5_3_1_0()); 
+	    }
+		lv_datatypes_9_0=ruleDataType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		add(
+       			$current, 
+       			"datatypes",
+        		lv_datatypes_9_0, 
+        		"DataType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_5_4());
+    }
+)?(	otherlv_11='interfaces' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getRepositoryAccess().getInterfacesKeyword_6_0());
+    }
+	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getInterfacesInterfaceParserRuleCall_6_2_0()); 
+	    }
+		lv_interfaces_13_0=ruleInterface		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		add(
+       			$current, 
+       			"interfaces",
+        		lv_interfaces_13_0, 
+        		"Interface");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_14=',' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getRepositoryAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getInterfacesInterfaceParserRuleCall_6_3_1_0()); 
+	    }
+		lv_interfaces_15_0=ruleInterface		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		add(
+       			$current, 
+       			"interfaces",
+        		lv_interfaces_15_0, 
+        		"Interface");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_16='}' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?(	otherlv_17='components' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getRepositoryAccess().getComponentsKeyword_7_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getComponentsRepositoryComponentParserRuleCall_7_2_0()); 
+	    }
+		lv_components_19_0=ruleRepositoryComponent		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		add(
+       			$current, 
+       			"components",
+        		lv_components_19_0, 
+        		"RepositoryComponent");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getRepositoryAccess().getCommaKeyword_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryAccess().getComponentsRepositoryComponentParserRuleCall_7_3_1_0()); 
+	    }
+		lv_components_21_0=ruleRepositoryComponent		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryRule());
+	        }
+       		add(
+       			$current, 
+       			"components",
+        		lv_components_21_0, 
+        		"RepositoryComponent");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_7_4());
+    }
+)?	otherlv_23='}' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeRule()); }
+	 iv_ruleDataType=ruleDataType 
+	 { $current=$iv_ruleDataType.current; } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDataTypeAccess().getCollectionDataTypeParserRuleCall_0()); 
+    }
+    this_CollectionDataType_0=ruleCollectionDataType
+    { 
+        $current = $this_CollectionDataType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeAccess().getCompositeDataTypeParserRuleCall_1()); 
+    }
+    this_CompositeDataType_1=ruleCompositeDataType
+    { 
+        $current = $this_CompositeDataType_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeAccess().getPrimitiveDataTypeParserRuleCall_2()); 
+    }
+    this_PrimitiveDataType_2=rulePrimitiveDataType
+    { 
+        $current = $this_PrimitiveDataType_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRepositoryComponent
+entryRuleRepositoryComponent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRepositoryComponentRule()); }
+	 iv_ruleRepositoryComponent=ruleRepositoryComponent 
+	 { $current=$iv_ruleRepositoryComponent.current; } 
+	 EOF 
+;
+
+// Rule RepositoryComponent
+ruleRepositoryComponent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getRepositoryComponentAccess().getRepositoryComponent_ImplParserRuleCall_0()); 
+    }
+    this_RepositoryComponent_Impl_0=ruleRepositoryComponent_Impl
+    { 
+        $current = $this_RepositoryComponent_Impl_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getRepositoryComponentAccess().getBasicComponentParserRuleCall_1()); 
+    }
+    this_BasicComponent_1=ruleBasicComponent
+    { 
+        $current = $this_BasicComponent_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getRepositoryComponentAccess().getCompositeComponentParserRuleCall_2()); 
+    }
+    this_CompositeComponent_2=ruleCompositeComponent
+    { 
+        $current = $this_CompositeComponent_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getRepositoryComponentAccess().getSubSystemParserRuleCall_3()); 
+    }
+    this_SubSystem_3=ruleSubSystem
+    { 
+        $current = $this_SubSystem_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleInfluencingParameter
+entryRuleInfluencingParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInfluencingParameterRule()); }
+	 iv_ruleInfluencingParameter=ruleInfluencingParameter 
+	 { $current=$iv_ruleInfluencingParameter.current; } 
+	 EOF 
+;
+
+// Rule InfluencingParameter
+ruleInfluencingParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getInfluencingParameterAccess().getInfluencingParameter_ImplParserRuleCall_0()); 
+    }
+    this_InfluencingParameter_Impl_0=ruleInfluencingParameter_Impl
+    { 
+        $current = $this_InfluencingParameter_Impl_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getInfluencingParameterAccess().getServiceInputParameterParserRuleCall_1()); 
+    }
+    this_ServiceInputParameter_1=ruleServiceInputParameter
+    { 
+        $current = $this_ServiceInputParameter_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getInfluencingParameterAccess().getExternalCallReturnParameterParserRuleCall_2()); 
+    }
+    this_ExternalCallReturnParameter_2=ruleExternalCallReturnParameter
+    { 
+        $current = $this_ExternalCallReturnParameter_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getInfluencingParameterAccess().getExternalCallParameterParserRuleCall_3()); 
+    }
+    this_ExternalCallParameter_3=ruleExternalCallParameter
+    { 
+        $current = $this_ExternalCallParameter_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleExternalCall
+entryRuleExternalCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExternalCallRule()); }
+	 iv_ruleExternalCall=ruleExternalCall 
+	 { $current=$iv_ruleExternalCall.current; } 
+	 EOF 
+;
+
+// Rule ExternalCall
+ruleExternalCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getExternalCallAccess().getExternalCall_ImplParserRuleCall_0()); 
+    }
+    this_ExternalCall_Impl_0=ruleExternalCall_Impl
+    { 
+        $current = $this_ExternalCall_Impl_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getExternalCallAccess().getExternalCallActionParserRuleCall_1()); 
+    }
+    this_ExternalCallAction_1=ruleExternalCallAction
+    { 
+        $current = $this_ExternalCallAction_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAbstractAction
+entryRuleAbstractAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAbstractActionRule()); }
+	 iv_ruleAbstractAction=ruleAbstractAction 
+	 { $current=$iv_ruleAbstractAction.current; } 
+	 EOF 
+;
+
+// Rule AbstractAction
+ruleAbstractAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getAbstractAction_ImplParserRuleCall_0()); 
+    }
+    this_AbstractAction_Impl_0=ruleAbstractAction_Impl
+    { 
+        $current = $this_AbstractAction_Impl_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_1()); 
+    }
+    this_StartAction_1=ruleStartAction
+    { 
+        $current = $this_StartAction_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_2()); 
+    }
+    this_StopAction_2=ruleStopAction
+    { 
+        $current = $this_StopAction_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getAcquireActionParserRuleCall_3()); 
+    }
+    this_AcquireAction_3=ruleAcquireAction
+    { 
+        $current = $this_AcquireAction_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getReleaseActionParserRuleCall_4()); 
+    }
+    this_ReleaseAction_4=ruleReleaseAction
+    { 
+        $current = $this_ReleaseAction_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getInternalActionParserRuleCall_5()); 
+    }
+    this_InternalAction_5=ruleInternalAction
+    { 
+        $current = $this_InternalAction_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getForkActionParserRuleCall_6()); 
+    }
+    this_ForkAction_6=ruleForkAction
+    { 
+        $current = $this_ForkAction_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_7()); 
+    }
+    this_BranchAction_7=ruleBranchAction
+    { 
+        $current = $this_BranchAction_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_8()); 
+    }
+    this_LoopAction_8=ruleLoopAction
+    { 
+        $current = $this_LoopAction_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAbstractActionAccess().getExternalCallActionParserRuleCall_9()); 
+    }
+    this_ExternalCallAction_9=ruleExternalCallAction
+    { 
+        $current = $this_ExternalCallAction_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleComponentInternalBehavior
+entryRuleComponentInternalBehavior returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getComponentInternalBehaviorRule()); }
+	 iv_ruleComponentInternalBehavior=ruleComponentInternalBehavior 
+	 { $current=$iv_ruleComponentInternalBehavior.current; } 
+	 EOF 
+;
+
+// Rule ComponentInternalBehavior
+ruleComponentInternalBehavior returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getComponentInternalBehaviorAccess().getComponentInternalBehavior_ImplParserRuleCall_0()); 
+    }
+    this_ComponentInternalBehavior_Impl_0=ruleComponentInternalBehavior_Impl
+    { 
+        $current = $this_ComponentInternalBehavior_Impl_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getComponentInternalBehaviorAccess().getFineGrainedBehaviorParserRuleCall_1()); 
+    }
+    this_FineGrainedBehavior_1=ruleFineGrainedBehavior
+    { 
+        $current = $this_FineGrainedBehavior_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleEString
+entryRuleEString returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEStringRule()); } 
+	 iv_ruleEString=ruleEString 
+	 { $current=$iv_ruleEString.current.getText(); }  
+	 EOF 
+;
+
+// Rule EString
+ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_STRING_0=RULE_STRING    {
+		$current.merge(this_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+    }
+
+    |    this_ID_1=RULE_ID    {
+		$current.merge(this_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleInterface
+entryRuleInterface returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInterfaceRule()); }
+	 iv_ruleInterface=ruleInterface 
+	 { $current=$iv_ruleInterface.current; } 
+	 EOF 
+;
+
+// Rule Interface
+ruleInterface returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Interface' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getInterfaceAccess().getInterfaceKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInterfaceAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInterfaceRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getInterfaceAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getInterfaceAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInterfaceAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInterfaceRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='parentInterfaces' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getInterfaceAccess().getParentInterfacesKeyword_5_0());
+    }
+	otherlv_6='(' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getInterfaceAccess().getLeftParenthesisKeyword_5_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInterfaceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_2_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getInterfaceAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInterfaceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10=')' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getInterfaceAccess().getRightParenthesisKeyword_5_4());
+    }
+)?(	otherlv_11='signatures' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getInterfaceAccess().getSignaturesKeyword_6_0());
+    }
+	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getInterfaceAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInterfaceAccess().getSignaturesSignatureParserRuleCall_6_2_0()); 
+	    }
+		lv_signatures_13_0=ruleSignature		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInterfaceRule());
+	        }
+       		add(
+       			$current, 
+       			"signatures",
+        		lv_signatures_13_0, 
+        		"Signature");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_14=',' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getInterfaceAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInterfaceAccess().getSignaturesSignatureParserRuleCall_6_3_1_0()); 
+	    }
+		lv_signatures_15_0=ruleSignature		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInterfaceRule());
+	        }
+       		add(
+       			$current, 
+       			"signatures",
+        		lv_signatures_15_0, 
+        		"Signature");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_16='}' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getInterfaceAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?	otherlv_17='}' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getInterfaceAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRepositoryComponent_Impl
+entryRuleRepositoryComponent_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRepositoryComponent_ImplRule()); }
+	 iv_ruleRepositoryComponent_Impl=ruleRepositoryComponent_Impl 
+	 { $current=$iv_ruleRepositoryComponent_Impl.current; } 
+	 EOF 
+;
+
+// Rule RepositoryComponent_Impl
+ruleRepositoryComponent_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='RepositoryComponent' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getRepositoryComponent_ImplAccess().getRepositoryComponentKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getRepositoryComponent_ImplAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='relationship' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipKeyword_5_0());
+    }
+	otherlv_6='(' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getRepositoryComponent_ImplAccess().getLeftParenthesisKeyword_5_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10=')' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getRepositoryComponent_ImplAccess().getRightParenthesisKeyword_5_4());
+    }
+)?(	otherlv_11='providedRoles' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesKeyword_6_0());
+    }
+	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+	    }
+		lv_providedRoles_13_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_13_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_14=',' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+	    }
+		lv_providedRoles_15_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_15_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_16='}' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?(	otherlv_17='blackBoxBehavior' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorKeyword_7_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+	    }
+		lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_19_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+	    }
+		lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_21_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_7_4());
+    }
+)?(	otherlv_23='requiredRoles' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesKeyword_8_0());
+    }
+	otherlv_24='{' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_8_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+	    }
+		lv_requiredRoles_25_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_25_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=',' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_8_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+	    }
+		lv_requiredRoles_27_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_27_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28='}' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_8_4());
+    }
+)?(	otherlv_29='coarseGrainedBehavior' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorKeyword_9_0());
+    }
+	otherlv_30='{' 
+    {
+    	newLeafNode(otherlv_30, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_9_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+	    }
+		lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_31_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_32=',' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_9_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+	    }
+		lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_33_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_34='}' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_9_4());
+    }
+)?	otherlv_35='}' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_10());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCollectionDataType
+entryRuleCollectionDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCollectionDataTypeRule()); }
+	 iv_ruleCollectionDataType=ruleCollectionDataType 
+	 { $current=$iv_ruleCollectionDataType.current; } 
+	 EOF 
+;
+
+// Rule CollectionDataType
+ruleCollectionDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CollectionDataType' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCollectionDataTypeAccess().getCollectionDataTypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionDataTypeAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCollectionDataTypeAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCollectionDataTypeAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionDataTypeAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCollectionDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='innerType' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCollectionDataTypeAccess().getInnerTypeKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCollectionDataTypeRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCollectionDataTypeAccess().getInnerTypeDataTypeCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getCollectionDataTypeAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCompositeDataType
+entryRuleCompositeDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCompositeDataTypeRule()); }
+	 iv_ruleCompositeDataType=ruleCompositeDataType 
+	 { $current=$iv_ruleCompositeDataType.current; } 
+	 EOF 
+;
+
+// Rule CompositeDataType
+ruleCompositeDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CompositeDataType' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCompositeDataTypeAccess().getCompositeDataTypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCompositeDataTypeAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCompositeDataTypeAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='parentTypes' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCompositeDataTypeAccess().getParentTypesKeyword_5_0());
+    }
+	otherlv_6='(' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCompositeDataTypeAccess().getLeftParenthesisKeyword_5_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCompositeDataTypeRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_2_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getCompositeDataTypeAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCompositeDataTypeRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10=')' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getCompositeDataTypeAccess().getRightParenthesisKeyword_5_4());
+    }
+)?(	otherlv_11='innerDeclarations' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsKeyword_6_0());
+    }
+	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getCompositeDataTypeAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsInnerDeclarationParserRuleCall_6_2_0()); 
+	    }
+		lv_innerDeclarations_13_0=ruleInnerDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"innerDeclarations",
+        		lv_innerDeclarations_13_0, 
+        		"InnerDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_14=',' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getCompositeDataTypeAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsInnerDeclarationParserRuleCall_6_3_1_0()); 
+	    }
+		lv_innerDeclarations_15_0=ruleInnerDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"innerDeclarations",
+        		lv_innerDeclarations_15_0, 
+        		"InnerDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_16='}' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getCompositeDataTypeAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?	otherlv_17='}' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getCompositeDataTypeAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePrimitiveDataType
+entryRulePrimitiveDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPrimitiveDataTypeRule()); }
+	 iv_rulePrimitiveDataType=rulePrimitiveDataType 
+	 { $current=$iv_rulePrimitiveDataType.current; } 
+	 EOF 
+;
+
+// Rule PrimitiveDataType
+rulePrimitiveDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='PrimitiveDataType' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPrimitiveDataTypeAccess().getPrimitiveDataTypeKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPrimitiveDataTypeAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='type' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPrimitiveDataTypeAccess().getTypeKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPrimitiveDataTypeAccess().getTypePrimitiveTypeEnumEnumRuleCall_3_0()); 
+	    }
+		lv_type_3_0=rulePrimitiveTypeEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPrimitiveDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"PrimitiveTypeEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPrimitiveDataTypeAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInnerDeclaration
+entryRuleInnerDeclaration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInnerDeclarationRule()); }
+	 iv_ruleInnerDeclaration=ruleInnerDeclaration 
+	 { $current=$iv_ruleInnerDeclaration.current; } 
+	 EOF 
+;
+
+// Rule InnerDeclaration
+ruleInnerDeclaration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='InnerDeclaration' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getInnerDeclarationAccess().getInnerDeclarationKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInnerDeclarationAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInnerDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getInnerDeclarationAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getInnerDeclarationAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInnerDeclarationAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInnerDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='dataType' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getInnerDeclarationAccess().getDataTypeKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInnerDeclarationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getInnerDeclarationAccess().getDataTypeDataTypeCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getInnerDeclarationAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSignature
+entryRuleSignature returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSignatureRule()); }
+	 iv_ruleSignature=ruleSignature 
+	 { $current=$iv_ruleSignature.current; } 
+	 EOF 
+;
+
+// Rule Signature
+ruleSignature returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Signature' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSignatureAccess().getSignatureKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSignatureAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSignatureRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSignatureAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getSignatureAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSignatureAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSignatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='returnType' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getSignatureAccess().getReturnTypeKeyword_5_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSignatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getSignatureAccess().getReturnTypeDataTypeCrossReference_5_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_7='parameters' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getSignatureAccess().getParametersKeyword_6_0());
+    }
+	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getSignatureAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSignatureAccess().getParametersParameterParserRuleCall_6_2_0()); 
+	    }
+		lv_parameters_9_0=ruleParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSignatureRule());
+	        }
+       		add(
+       			$current, 
+       			"parameters",
+        		lv_parameters_9_0, 
+        		"Parameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getSignatureAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSignatureAccess().getParametersParameterParserRuleCall_6_3_1_0()); 
+	    }
+		lv_parameters_11_0=ruleParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSignatureRule());
+	        }
+       		add(
+       			$current, 
+       			"parameters",
+        		lv_parameters_11_0, 
+        		"Parameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getSignatureAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getSignatureAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleParameter
+entryRuleParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getParameterRule()); }
+	 iv_ruleParameter=ruleParameter 
+	 { $current=$iv_ruleParameter.current; } 
+	 EOF 
+;
+
+// Rule Parameter
+ruleParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Parameter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getParameterAccess().getParameterKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterAccess().getNameEStringParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getParameterAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='modifier' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getParameterAccess().getModifierKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getParameterAccess().getModifierParameterModifierEnumRuleCall_4_0()); 
+	    }
+		lv_modifier_4_0=ruleParameterModifier		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"modifier",
+        		lv_modifier_4_0, 
+        		"ParameterModifier");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='dataType' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getParameterAccess().getDataTypeKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getParameterAccess().getDataTypeDataTypeCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getParameterAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleProvidedRole
+entryRuleProvidedRole returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProvidedRoleRule()); }
+	 iv_ruleProvidedRole=ruleProvidedRole 
+	 { $current=$iv_ruleProvidedRole.current; } 
+	 EOF 
+;
+
+// Rule ProvidedRole
+ruleProvidedRole returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ProvidedRole' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getProvidedRoleAccess().getProvidedRoleKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedRoleAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProvidedRoleRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getProvidedRoleAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getProvidedRoleAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedRoleAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProvidedRoleRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='interface' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getProvidedRoleAccess().getInterfaceKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getProvidedRoleRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedRoleAccess().getInterfaceInterfaceCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getProvidedRoleAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBlackBoxBehavior
+entryRuleBlackBoxBehavior returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBlackBoxBehaviorRule()); }
+	 iv_ruleBlackBoxBehavior=ruleBlackBoxBehavior 
+	 { $current=$iv_ruleBlackBoxBehavior.current; } 
+	 EOF 
+;
+
+// Rule BlackBoxBehavior
+ruleBlackBoxBehavior returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='BlackBoxBehavior' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getBlackBoxBehaviorAccess().getBlackBoxBehaviorKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBlackBoxBehaviorAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='describedSignature' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBlackBoxBehaviorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4='describedEntity' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBlackBoxBehaviorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityInterfaceProvidingEntityCrossReference_4_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6='influencingParameter' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterKeyword_5_0());
+    }
+	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getBlackBoxBehaviorAccess().getLeftCurlyBracketKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0()); 
+	    }
+		lv_influencingParameter_8_0=ruleInfluencingParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBlackBoxBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"influencingParameter",
+        		lv_influencingParameter_8_0, 
+        		"InfluencingParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getBlackBoxBehaviorAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0()); 
+	    }
+		lv_influencingParameter_10_0=ruleInfluencingParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBlackBoxBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"influencingParameter",
+        		lv_influencingParameter_10_0, 
+        		"InfluencingParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11='}' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getBlackBoxBehaviorAccess().getRightCurlyBracketKeyword_5_4());
+    }
+)?(	otherlv_12='responseTimeSpecification' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getBlackBoxBehaviorAccess().getResponseTimeSpecificationKeyword_6_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getResponseTimeSpecificationResponseTimeSpecificationParserRuleCall_6_1_0()); 
+	    }
+		lv_responseTimeSpecification_13_0=ruleResponseTimeSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBlackBoxBehaviorRule());
+	        }
+       		set(
+       			$current, 
+       			"responseTimeSpecification",
+        		lv_responseTimeSpecification_13_0, 
+        		"ResponseTimeSpecification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_14='}' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getBlackBoxBehaviorAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRequiredRole
+entryRuleRequiredRole returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRequiredRoleRule()); }
+	 iv_ruleRequiredRole=ruleRequiredRole 
+	 { $current=$iv_ruleRequiredRole.current; } 
+	 EOF 
+;
+
+// Rule RequiredRole
+ruleRequiredRole returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='RequiredRole' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getRequiredRoleAccess().getRequiredRoleKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredRoleAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRequiredRoleRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getRequiredRoleAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getRequiredRoleAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredRoleAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRequiredRoleRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='interface' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getRequiredRoleAccess().getInterfaceKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRequiredRoleRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredRoleAccess().getInterfaceInterfaceCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getRequiredRoleAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCoarseGrainedBehavior
+entryRuleCoarseGrainedBehavior returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCoarseGrainedBehaviorRule()); }
+	 iv_ruleCoarseGrainedBehavior=ruleCoarseGrainedBehavior 
+	 { $current=$iv_ruleCoarseGrainedBehavior.current; } 
+	 EOF 
+;
+
+// Rule CoarseGrainedBehavior
+ruleCoarseGrainedBehavior returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CoarseGrainedBehavior' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCoarseGrainedBehaviorAccess().getCoarseGrainedBehaviorKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='describedSignature' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4='describedEntity' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6='influencingParameter' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterKeyword_5_0());
+    }
+	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0()); 
+	    }
+		lv_influencingParameter_8_0=ruleInfluencingParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"influencingParameter",
+        		lv_influencingParameter_8_0, 
+        		"InfluencingParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0()); 
+	    }
+		lv_influencingParameter_10_0=ruleInfluencingParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"influencingParameter",
+        		lv_influencingParameter_10_0, 
+        		"InfluencingParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11='}' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_5_4());
+    }
+)?(	otherlv_12='externalCallFrequency' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyKeyword_6_0());
+    }
+	otherlv_13='{' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_2_0()); 
+	    }
+		lv_externalCallFrequency_14_0=ruleExternalCallFrequency		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"externalCallFrequency",
+        		lv_externalCallFrequency_14_0, 
+        		"ExternalCallFrequency");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_15=',' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_3_1_0()); 
+	    }
+		lv_externalCallFrequency_16_0=ruleExternalCallFrequency		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"externalCallFrequency",
+        		lv_externalCallFrequency_16_0, 
+        		"ExternalCallFrequency");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_17='}' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?(	otherlv_18='resourceDemandSpecification' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationKeyword_7_0());
+    }
+	otherlv_19='{' 
+    {
+    	newLeafNode(otherlv_19, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_2_0()); 
+	    }
+		lv_resourceDemandSpecification_20_0=ruleResourceDemandSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"resourceDemandSpecification",
+        		lv_resourceDemandSpecification_20_0, 
+        		"ResourceDemandSpecification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_21=',' 
+    {
+    	newLeafNode(otherlv_21, grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_3_1_0()); 
+	    }
+		lv_resourceDemandSpecification_22_0=ruleResourceDemandSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"resourceDemandSpecification",
+        		lv_resourceDemandSpecification_22_0, 
+        		"ResourceDemandSpecification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_23='}' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_7_4());
+    }
+)?	otherlv_24='}' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBasicComponent
+entryRuleBasicComponent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBasicComponentRule()); }
+	 iv_ruleBasicComponent=ruleBasicComponent 
+	 { $current=$iv_ruleBasicComponent.current; } 
+	 EOF 
+;
+
+// Rule BasicComponent
+ruleBasicComponent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='BasicComponent' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getBasicComponentAccess().getBasicComponentKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getBasicComponentAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='relationship' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getBasicComponentAccess().getRelationshipKeyword_5_0());
+    }
+	otherlv_6='(' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getBasicComponentAccess().getLeftParenthesisKeyword_5_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBasicComponentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getBasicComponentAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBasicComponentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10=')' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getBasicComponentAccess().getRightParenthesisKeyword_5_4());
+    }
+)?(	otherlv_11='providedRoles' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getBasicComponentAccess().getProvidedRolesKeyword_6_0());
+    }
+	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+	    }
+		lv_providedRoles_13_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_13_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_14=',' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getBasicComponentAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+	    }
+		lv_providedRoles_15_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_15_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_16='}' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?(	otherlv_17='blackBoxBehavior' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorKeyword_7_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+	    }
+		lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_19_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getBasicComponentAccess().getCommaKeyword_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+	    }
+		lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_21_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_7_4());
+    }
+)?(	otherlv_23='requiredRoles' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getBasicComponentAccess().getRequiredRolesKeyword_8_0());
+    }
+	otherlv_24='{' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_8_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+	    }
+		lv_requiredRoles_25_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_25_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=',' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getBasicComponentAccess().getCommaKeyword_8_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+	    }
+		lv_requiredRoles_27_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_27_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28='}' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_8_4());
+    }
+)?(	otherlv_29='coarseGrainedBehavior' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorKeyword_9_0());
+    }
+	otherlv_30='{' 
+    {
+    	newLeafNode(otherlv_30, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_9_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+	    }
+		lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_31_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_32=',' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getBasicComponentAccess().getCommaKeyword_9_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+	    }
+		lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_33_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_34='}' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_9_4());
+    }
+)?(	otherlv_35='passiveResources' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getBasicComponentAccess().getPassiveResourcesKeyword_10_0());
+    }
+	otherlv_36='{' 
+    {
+    	newLeafNode(otherlv_36, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_10_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_2_0()); 
+	    }
+		lv_passiveResources_37_0=rulePassiveResourceSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"passiveResources",
+        		lv_passiveResources_37_0, 
+        		"PassiveResourceSpecification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_38=',' 
+    {
+    	newLeafNode(otherlv_38, grammarAccess.getBasicComponentAccess().getCommaKeyword_10_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_3_1_0()); 
+	    }
+		lv_passiveResources_39_0=rulePassiveResourceSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"passiveResources",
+        		lv_passiveResources_39_0, 
+        		"PassiveResourceSpecification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_40='}' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_10_4());
+    }
+)?(	otherlv_41='fineGrainedBehavior' 
+    {
+    	newLeafNode(otherlv_41, grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorKeyword_11_0());
+    }
+	otherlv_42='{' 
+    {
+    	newLeafNode(otherlv_42, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_11_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_2_0()); 
+	    }
+		lv_fineGrainedBehavior_43_0=ruleFineGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"fineGrainedBehavior",
+        		lv_fineGrainedBehavior_43_0, 
+        		"FineGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_44=',' 
+    {
+    	newLeafNode(otherlv_44, grammarAccess.getBasicComponentAccess().getCommaKeyword_11_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_3_1_0()); 
+	    }
+		lv_fineGrainedBehavior_45_0=ruleFineGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"fineGrainedBehavior",
+        		lv_fineGrainedBehavior_45_0, 
+        		"FineGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_46='}' 
+    {
+    	newLeafNode(otherlv_46, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_11_4());
+    }
+)?	otherlv_47='}' 
+    {
+    	newLeafNode(otherlv_47, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_12());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCompositeComponent
+entryRuleCompositeComponent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCompositeComponentRule()); }
+	 iv_ruleCompositeComponent=ruleCompositeComponent 
+	 { $current=$iv_ruleCompositeComponent.current; } 
+	 EOF 
+;
+
+// Rule CompositeComponent
+ruleCompositeComponent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CompositeComponent' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCompositeComponentAccess().getCompositeComponentKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCompositeComponentAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='relationship' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCompositeComponentAccess().getRelationshipKeyword_5_0());
+    }
+	otherlv_6='(' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCompositeComponentAccess().getLeftParenthesisKeyword_5_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCompositeComponentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getCompositeComponentAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCompositeComponentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10=')' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getCompositeComponentAccess().getRightParenthesisKeyword_5_4());
+    }
+)?(	otherlv_11='providedRoles' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getCompositeComponentAccess().getProvidedRolesKeyword_6_0());
+    }
+	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+	    }
+		lv_providedRoles_13_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_13_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_14=',' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getCompositeComponentAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+	    }
+		lv_providedRoles_15_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_15_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_16='}' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?(	otherlv_17='blackBoxBehavior' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorKeyword_7_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+	    }
+		lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_19_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getCompositeComponentAccess().getCommaKeyword_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+	    }
+		lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_21_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_7_4());
+    }
+)?(	otherlv_23='requiredRoles' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getCompositeComponentAccess().getRequiredRolesKeyword_8_0());
+    }
+	otherlv_24='{' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_8_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+	    }
+		lv_requiredRoles_25_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_25_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=',' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getCompositeComponentAccess().getCommaKeyword_8_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+	    }
+		lv_requiredRoles_27_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_27_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28='}' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_8_4());
+    }
+)?(	otherlv_29='coarseGrainedBehavior' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorKeyword_9_0());
+    }
+	otherlv_30='{' 
+    {
+    	newLeafNode(otherlv_30, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_9_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+	    }
+		lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_31_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_32=',' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getCompositeComponentAccess().getCommaKeyword_9_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+	    }
+		lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_33_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_34='}' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_9_4());
+    }
+)?(	otherlv_35='assemblyContexts' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getCompositeComponentAccess().getAssemblyContextsKeyword_10_0());
+    }
+	otherlv_36='{' 
+    {
+    	newLeafNode(otherlv_36, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_10_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_2_0()); 
+	    }
+		lv_assemblyContexts_37_0=ruleAssemblyContext		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyContexts",
+        		lv_assemblyContexts_37_0, 
+        		"AssemblyContext");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_38=',' 
+    {
+    	newLeafNode(otherlv_38, grammarAccess.getCompositeComponentAccess().getCommaKeyword_10_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0()); 
+	    }
+		lv_assemblyContexts_39_0=ruleAssemblyContext		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyContexts",
+        		lv_assemblyContexts_39_0, 
+        		"AssemblyContext");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_40='}' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_10_4());
+    }
+)?(	otherlv_41='assemblyConnectors' 
+    {
+    	newLeafNode(otherlv_41, grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsKeyword_11_0());
+    }
+	otherlv_42='{' 
+    {
+    	newLeafNode(otherlv_42, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_11_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0()); 
+	    }
+		lv_assemblyConnectors_43_0=ruleAssemblyConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyConnectors",
+        		lv_assemblyConnectors_43_0, 
+        		"AssemblyConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_44=',' 
+    {
+    	newLeafNode(otherlv_44, grammarAccess.getCompositeComponentAccess().getCommaKeyword_11_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0()); 
+	    }
+		lv_assemblyConnectors_45_0=ruleAssemblyConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyConnectors",
+        		lv_assemblyConnectors_45_0, 
+        		"AssemblyConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_46='}' 
+    {
+    	newLeafNode(otherlv_46, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_11_4());
+    }
+)?(	otherlv_47='providedDelegationConnectors' 
+    {
+    	newLeafNode(otherlv_47, grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsKeyword_12_0());
+    }
+	otherlv_48='{' 
+    {
+    	newLeafNode(otherlv_48, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_12_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0()); 
+	    }
+		lv_providedDelegationConnectors_49_0=ruleProvidedDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"providedDelegationConnectors",
+        		lv_providedDelegationConnectors_49_0, 
+        		"ProvidedDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_50=',' 
+    {
+    	newLeafNode(otherlv_50, grammarAccess.getCompositeComponentAccess().getCommaKeyword_12_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0()); 
+	    }
+		lv_providedDelegationConnectors_51_0=ruleProvidedDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"providedDelegationConnectors",
+        		lv_providedDelegationConnectors_51_0, 
+        		"ProvidedDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_52='}' 
+    {
+    	newLeafNode(otherlv_52, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_12_4());
+    }
+)?(	otherlv_53='requiredDelegationConnectors' 
+    {
+    	newLeafNode(otherlv_53, grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsKeyword_13_0());
+    }
+	otherlv_54='{' 
+    {
+    	newLeafNode(otherlv_54, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_13_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0()); 
+	    }
+		lv_requiredDelegationConnectors_55_0=ruleRequiredDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredDelegationConnectors",
+        		lv_requiredDelegationConnectors_55_0, 
+        		"RequiredDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_56=',' 
+    {
+    	newLeafNode(otherlv_56, grammarAccess.getCompositeComponentAccess().getCommaKeyword_13_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0()); 
+	    }
+		lv_requiredDelegationConnectors_57_0=ruleRequiredDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredDelegationConnectors",
+        		lv_requiredDelegationConnectors_57_0, 
+        		"RequiredDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_58='}' 
+    {
+    	newLeafNode(otherlv_58, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_13_4());
+    }
+)?	otherlv_59='}' 
+    {
+    	newLeafNode(otherlv_59, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_14());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSubSystem
+entryRuleSubSystem returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSubSystemRule()); }
+	 iv_ruleSubSystem=ruleSubSystem 
+	 { $current=$iv_ruleSubSystem.current; } 
+	 EOF 
+;
+
+// Rule SubSystem
+ruleSubSystem returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='SubSystem' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSubSystemAccess().getSubSystemKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getSubSystemAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5='relationship' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getSubSystemAccess().getRelationshipKeyword_5_0());
+    }
+	otherlv_6='(' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getSubSystemAccess().getLeftParenthesisKeyword_5_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSubSystemRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_8=',' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getSubSystemAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSubSystemRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_10=')' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getSubSystemAccess().getRightParenthesisKeyword_5_4());
+    }
+)?(	otherlv_11='providedRoles' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getSubSystemAccess().getProvidedRolesKeyword_6_0());
+    }
+	otherlv_12='{' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+	    }
+		lv_providedRoles_13_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_13_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_14=',' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getSubSystemAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+	    }
+		lv_providedRoles_15_0=ruleProvidedRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"providedRoles",
+        		lv_providedRoles_15_0, 
+        		"ProvidedRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_16='}' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?(	otherlv_17='blackBoxBehavior' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getSubSystemAccess().getBlackBoxBehaviorKeyword_7_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+	    }
+		lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_19_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getSubSystemAccess().getCommaKeyword_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+	    }
+		lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"blackBoxBehavior",
+        		lv_blackBoxBehavior_21_0, 
+        		"BlackBoxBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_7_4());
+    }
+)?(	otherlv_23='requiredRoles' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getSubSystemAccess().getRequiredRolesKeyword_8_0());
+    }
+	otherlv_24='{' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_8_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+	    }
+		lv_requiredRoles_25_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_25_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=',' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getSubSystemAccess().getCommaKeyword_8_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+	    }
+		lv_requiredRoles_27_0=ruleRequiredRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredRoles",
+        		lv_requiredRoles_27_0, 
+        		"RequiredRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28='}' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_8_4());
+    }
+)?(	otherlv_29='coarseGrainedBehavior' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorKeyword_9_0());
+    }
+	otherlv_30='{' 
+    {
+    	newLeafNode(otherlv_30, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_9_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+	    }
+		lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_31_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_32=',' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getSubSystemAccess().getCommaKeyword_9_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+	    }
+		lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"coarseGrainedBehavior",
+        		lv_coarseGrainedBehavior_33_0, 
+        		"CoarseGrainedBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_34='}' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_9_4());
+    }
+)?(	otherlv_35='assemblyContexts' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getSubSystemAccess().getAssemblyContextsKeyword_10_0());
+    }
+	otherlv_36='{' 
+    {
+    	newLeafNode(otherlv_36, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_10_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_2_0()); 
+	    }
+		lv_assemblyContexts_37_0=ruleAssemblyContext		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyContexts",
+        		lv_assemblyContexts_37_0, 
+        		"AssemblyContext");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_38=',' 
+    {
+    	newLeafNode(otherlv_38, grammarAccess.getSubSystemAccess().getCommaKeyword_10_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0()); 
+	    }
+		lv_assemblyContexts_39_0=ruleAssemblyContext		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyContexts",
+        		lv_assemblyContexts_39_0, 
+        		"AssemblyContext");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_40='}' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_10_4());
+    }
+)?(	otherlv_41='assemblyConnectors' 
+    {
+    	newLeafNode(otherlv_41, grammarAccess.getSubSystemAccess().getAssemblyConnectorsKeyword_11_0());
+    }
+	otherlv_42='{' 
+    {
+    	newLeafNode(otherlv_42, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_11_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0()); 
+	    }
+		lv_assemblyConnectors_43_0=ruleAssemblyConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyConnectors",
+        		lv_assemblyConnectors_43_0, 
+        		"AssemblyConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_44=',' 
+    {
+    	newLeafNode(otherlv_44, grammarAccess.getSubSystemAccess().getCommaKeyword_11_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0()); 
+	    }
+		lv_assemblyConnectors_45_0=ruleAssemblyConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"assemblyConnectors",
+        		lv_assemblyConnectors_45_0, 
+        		"AssemblyConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_46='}' 
+    {
+    	newLeafNode(otherlv_46, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_11_4());
+    }
+)?(	otherlv_47='providedDelegationConnectors' 
+    {
+    	newLeafNode(otherlv_47, grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsKeyword_12_0());
+    }
+	otherlv_48='{' 
+    {
+    	newLeafNode(otherlv_48, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_12_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0()); 
+	    }
+		lv_providedDelegationConnectors_49_0=ruleProvidedDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"providedDelegationConnectors",
+        		lv_providedDelegationConnectors_49_0, 
+        		"ProvidedDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_50=',' 
+    {
+    	newLeafNode(otherlv_50, grammarAccess.getSubSystemAccess().getCommaKeyword_12_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0()); 
+	    }
+		lv_providedDelegationConnectors_51_0=ruleProvidedDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"providedDelegationConnectors",
+        		lv_providedDelegationConnectors_51_0, 
+        		"ProvidedDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_52='}' 
+    {
+    	newLeafNode(otherlv_52, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_12_4());
+    }
+)?(	otherlv_53='requiredDelegationConnectors' 
+    {
+    	newLeafNode(otherlv_53, grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsKeyword_13_0());
+    }
+	otherlv_54='{' 
+    {
+    	newLeafNode(otherlv_54, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_13_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0()); 
+	    }
+		lv_requiredDelegationConnectors_55_0=ruleRequiredDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredDelegationConnectors",
+        		lv_requiredDelegationConnectors_55_0, 
+        		"RequiredDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_56=',' 
+    {
+    	newLeafNode(otherlv_56, grammarAccess.getSubSystemAccess().getCommaKeyword_13_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0()); 
+	    }
+		lv_requiredDelegationConnectors_57_0=ruleRequiredDelegationConnector		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSubSystemRule());
+	        }
+       		add(
+       			$current, 
+       			"requiredDelegationConnectors",
+        		lv_requiredDelegationConnectors_57_0, 
+        		"RequiredDelegationConnector");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_58='}' 
+    {
+    	newLeafNode(otherlv_58, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_13_4());
+    }
+)?	otherlv_59='}' 
+    {
+    	newLeafNode(otherlv_59, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_14());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInfluencingParameter_Impl
+entryRuleInfluencingParameter_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInfluencingParameter_ImplRule()); }
+	 iv_ruleInfluencingParameter_Impl=ruleInfluencingParameter_Impl 
+	 { $current=$iv_ruleInfluencingParameter_Impl.current; } 
+	 EOF 
+;
+
+// Rule InfluencingParameter_Impl
+ruleInfluencingParameter_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='InfluencingParameter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getInfluencingParameter_ImplAccess().getInfluencingParameterKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getNameEStringParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getInfluencingParameter_ImplAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='description' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionEStringParserRuleCall_4_0()); 
+	    }
+		lv_description_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+	        }
+       		set(
+       			$current, 
+       			"description",
+        		lv_description_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='behavior' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInfluencingParameter_ImplRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorServiceBehaviorAbstractionCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7='scope' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getInfluencingParameter_ImplAccess().getScopeKeyword_7_0());
+    }
+	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getInfluencingParameter_ImplAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getScopeScopeParserRuleCall_7_2_0()); 
+	    }
+		lv_scope_9_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_9_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getInfluencingParameter_ImplAccess().getCommaKeyword_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getScopeScopeParserRuleCall_7_3_1_0()); 
+	    }
+		lv_scope_11_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_11_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getInfluencingParameter_ImplAccess().getRightCurlyBracketKeyword_7_4());
+    }
+)?	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getInfluencingParameter_ImplAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleResponseTimeSpecification
+entryRuleResponseTimeSpecification returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResponseTimeSpecificationRule()); }
+	 iv_ruleResponseTimeSpecification=ruleResponseTimeSpecification 
+	 { $current=$iv_ruleResponseTimeSpecification.current; } 
+	 EOF 
+;
+
+// Rule ResponseTimeSpecification
+ruleResponseTimeSpecification returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getResponseTimeSpecificationAccess().getResponseTimeSpecificationAction_0(),
+            $current);
+    }
+)	otherlv_1='ResponseTimeSpecification' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getResponseTimeSpecificationAccess().getResponseTimeSpecificationKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleScope
+entryRuleScope returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getScopeRule()); }
+	 iv_ruleScope=ruleScope 
+	 { $current=$iv_ruleScope.current; } 
+	 EOF 
+;
+
+// Rule Scope
+ruleScope returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Scope' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getScopeAccess().getScopeKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getScopeAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='interfaceProvidingRequiringEntity' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getScopeRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getScopeAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleServiceInputParameter
+entryRuleServiceInputParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getServiceInputParameterRule()); }
+	 iv_ruleServiceInputParameter=ruleServiceInputParameter 
+	 { $current=$iv_ruleServiceInputParameter.current; } 
+	 EOF 
+;
+
+// Rule ServiceInputParameter
+ruleServiceInputParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ServiceInputParameter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getServiceInputParameterAccess().getServiceInputParameterKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getNameEStringParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getServiceInputParameterAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='description' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getServiceInputParameterAccess().getDescriptionKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getDescriptionEStringParserRuleCall_4_0()); 
+	    }
+		lv_description_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"description",
+        		lv_description_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='characterization' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getServiceInputParameterAccess().getCharacterizationKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0()); 
+	    }
+		lv_characterization_6_0=ruleCharacterizationType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"characterization",
+        		lv_characterization_6_0, 
+        		"CharacterizationType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='behavior' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getServiceInputParameterAccess().getBehaviorKeyword_7());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getServiceInputParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='signature' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getServiceInputParameterAccess().getSignatureKeyword_9());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getServiceInputParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getSignatureSignatureCrossReference_10_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11='parameter' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getServiceInputParameterAccess().getParameterKeyword_11_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getServiceInputParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getParameterParameterCrossReference_11_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_13='returnType' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getServiceInputParameterAccess().getReturnTypeKeyword_12_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getServiceInputParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15='providedRole' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getServiceInputParameterAccess().getProvidedRoleKeyword_13());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getServiceInputParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getProvidedRoleProvidedRoleCrossReference_14_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_17='scope' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getServiceInputParameterAccess().getScopeKeyword_15_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getServiceInputParameterAccess().getLeftCurlyBracketKeyword_15_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getScopeScopeParserRuleCall_15_2_0()); 
+	    }
+		lv_scope_19_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_19_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getServiceInputParameterAccess().getCommaKeyword_15_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getScopeScopeParserRuleCall_15_3_1_0()); 
+	    }
+		lv_scope_21_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_21_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getServiceInputParameterAccess().getRightCurlyBracketKeyword_15_4());
+    }
+)?	otherlv_23='}' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getServiceInputParameterAccess().getRightCurlyBracketKeyword_16());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExternalCallReturnParameter
+entryRuleExternalCallReturnParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExternalCallReturnParameterRule()); }
+	 iv_ruleExternalCallReturnParameter=ruleExternalCallReturnParameter 
+	 { $current=$iv_ruleExternalCallReturnParameter.current; } 
+	 EOF 
+;
+
+// Rule ExternalCallReturnParameter
+ruleExternalCallReturnParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ExternalCallReturnParameter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getExternalCallReturnParameterAccess().getExternalCallReturnParameterKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getNameEStringParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExternalCallReturnParameterAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='description' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getExternalCallReturnParameterAccess().getDescriptionKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getDescriptionEStringParserRuleCall_4_0()); 
+	    }
+		lv_description_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"description",
+        		lv_description_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='characterization' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0()); 
+	    }
+		lv_characterization_6_0=ruleCharacterizationType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"characterization",
+        		lv_characterization_6_0, 
+        		"CharacterizationType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='behavior' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getExternalCallReturnParameterAccess().getBehaviorKeyword_7());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='signature' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getExternalCallReturnParameterAccess().getSignatureKeyword_9());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getSignatureSignatureCrossReference_10_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11='parameter' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getExternalCallReturnParameterAccess().getParameterKeyword_11_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getParameterParameterCrossReference_11_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_13='returnType' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeKeyword_12_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15='externalCall' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getExternalCallReturnParameterAccess().getExternalCallKeyword_13());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getExternalCallExternalCallCrossReference_14_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_17='scope' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getExternalCallReturnParameterAccess().getScopeKeyword_15_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getExternalCallReturnParameterAccess().getLeftCurlyBracketKeyword_15_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getScopeScopeParserRuleCall_15_2_0()); 
+	    }
+		lv_scope_19_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_19_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getExternalCallReturnParameterAccess().getCommaKeyword_15_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getScopeScopeParserRuleCall_15_3_1_0()); 
+	    }
+		lv_scope_21_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_21_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getExternalCallReturnParameterAccess().getRightCurlyBracketKeyword_15_4());
+    }
+)?	otherlv_23='}' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getExternalCallReturnParameterAccess().getRightCurlyBracketKeyword_16());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExternalCallParameter
+entryRuleExternalCallParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExternalCallParameterRule()); }
+	 iv_ruleExternalCallParameter=ruleExternalCallParameter 
+	 { $current=$iv_ruleExternalCallParameter.current; } 
+	 EOF 
+;
+
+// Rule ExternalCallParameter
+ruleExternalCallParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ExternalCallParameter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getExternalCallParameterAccess().getExternalCallParameterKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getNameEStringParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExternalCallParameterAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='description' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getExternalCallParameterAccess().getDescriptionKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getDescriptionEStringParserRuleCall_4_0()); 
+	    }
+		lv_description_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"description",
+        		lv_description_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='characterization' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getExternalCallParameterAccess().getCharacterizationKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0()); 
+	    }
+		lv_characterization_6_0=ruleCharacterizationType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"characterization",
+        		lv_characterization_6_0, 
+        		"CharacterizationType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='behavior' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getExternalCallParameterAccess().getBehaviorKeyword_7());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='signature' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getExternalCallParameterAccess().getSignatureKeyword_9());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getSignatureSignatureCrossReference_10_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11='parameter' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getExternalCallParameterAccess().getParameterKeyword_11_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getParameterParameterCrossReference_11_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_13='returnType' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getExternalCallParameterAccess().getReturnTypeKeyword_12_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15='externallCall' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getExternalCallParameterAccess().getExternallCallKeyword_13());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallParameterRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getExternallCallExternalCallCrossReference_14_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_17='scope' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getExternalCallParameterAccess().getScopeKeyword_15_0());
+    }
+	otherlv_18='{' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getExternalCallParameterAccess().getLeftCurlyBracketKeyword_15_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getScopeScopeParserRuleCall_15_2_0()); 
+	    }
+		lv_scope_19_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_19_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getExternalCallParameterAccess().getCommaKeyword_15_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getScopeScopeParserRuleCall_15_3_1_0()); 
+	    }
+		lv_scope_21_0=ruleScope		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+	        }
+       		add(
+       			$current, 
+       			"scope",
+        		lv_scope_21_0, 
+        		"Scope");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_22='}' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getExternalCallParameterAccess().getRightCurlyBracketKeyword_15_4());
+    }
+)?	otherlv_23='}' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getExternalCallParameterAccess().getRightCurlyBracketKeyword_16());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleFineGrainedBehavior
+entryRuleFineGrainedBehavior returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFineGrainedBehaviorRule()); }
+	 iv_ruleFineGrainedBehavior=ruleFineGrainedBehavior 
+	 { $current=$iv_ruleFineGrainedBehavior.current; } 
+	 EOF 
+;
+
+// Rule FineGrainedBehavior
+ruleFineGrainedBehavior returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='FineGrainedBehavior' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getFineGrainedBehaviorAccess().getFineGrainedBehaviorKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='describedSignature' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFineGrainedBehaviorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4='basicComponent' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getFineGrainedBehaviorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentBasicComponentCrossReference_4_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6='influencingParameter' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterKeyword_5_0());
+    }
+	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0()); 
+	    }
+		lv_influencingParameter_8_0=ruleInfluencingParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"influencingParameter",
+        		lv_influencingParameter_8_0, 
+        		"InfluencingParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getFineGrainedBehaviorAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0()); 
+	    }
+		lv_influencingParameter_10_0=ruleInfluencingParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"influencingParameter",
+        		lv_influencingParameter_10_0, 
+        		"InfluencingParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11='}' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_5_4());
+    }
+)?(	otherlv_12='actions' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getFineGrainedBehaviorAccess().getActionsKeyword_6_0());
+    }
+	otherlv_13='{' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getActionsAbstractActionParserRuleCall_6_2_0()); 
+	    }
+		lv_actions_14_0=ruleAbstractAction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"actions",
+        		lv_actions_14_0, 
+        		"AbstractAction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_15=',' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getFineGrainedBehaviorAccess().getCommaKeyword_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getActionsAbstractActionParserRuleCall_6_3_1_0()); 
+	    }
+		lv_actions_16_0=ruleAbstractAction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+	        }
+       		add(
+       			$current, 
+       			"actions",
+        		lv_actions_16_0, 
+        		"AbstractAction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_17='}' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_6_4());
+    }
+)?	otherlv_18='behavior' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getFineGrainedBehaviorAccess().getBehaviorKeyword_7());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getBehaviorComponentInternalBehaviorParserRuleCall_8_0()); 
+	    }
+		lv_behavior_19_0=ruleComponentInternalBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+	        }
+       		set(
+       			$current, 
+       			"behavior",
+        		lv_behavior_19_0, 
+        		"ComponentInternalBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_20='}' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_9());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAbstractAction_Impl
+entryRuleAbstractAction_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAbstractAction_ImplRule()); }
+	 iv_ruleAbstractAction_Impl=ruleAbstractAction_Impl 
+	 { $current=$iv_ruleAbstractAction_Impl.current; } 
+	 EOF 
+;
+
+// Rule AbstractAction_Impl
+ruleAbstractAction_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getAbstractAction_ImplAccess().getAbstractActionAction_0(),
+            $current);
+    }
+)	otherlv_1='AbstractAction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getAbstractAction_ImplAccess().getAbstractActionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getAbstractAction_ImplAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='predecessor' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getAbstractAction_ImplAccess().getPredecessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAbstractAction_ImplRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAbstractAction_ImplAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_5='successor' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getAbstractAction_ImplAccess().getSuccessorKeyword_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAbstractAction_ImplRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAbstractAction_ImplAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getAbstractAction_ImplAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleComponentInternalBehavior_Impl
+entryRuleComponentInternalBehavior_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getComponentInternalBehavior_ImplRule()); }
+	 iv_ruleComponentInternalBehavior_Impl=ruleComponentInternalBehavior_Impl 
+	 { $current=$iv_ruleComponentInternalBehavior_Impl.current; } 
+	 EOF 
+;
+
+// Rule ComponentInternalBehavior_Impl
+ruleComponentInternalBehavior_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorAction_0(),
+            $current);
+    }
+)	otherlv_1='ComponentInternalBehavior' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getComponentInternalBehavior_ImplAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='actions' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsKeyword_3_0());
+    }
+	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getComponentInternalBehavior_ImplAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAbstractActionParserRuleCall_3_2_0()); 
+	    }
+		lv_actions_5_0=ruleAbstractAction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getComponentInternalBehavior_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"actions",
+        		lv_actions_5_0, 
+        		"AbstractAction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getComponentInternalBehavior_ImplAccess().getCommaKeyword_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); 
+	    }
+		lv_actions_7_0=ruleAbstractAction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getComponentInternalBehavior_ImplRule());
+	        }
+       		add(
+       			$current, 
+       			"actions",
+        		lv_actions_7_0, 
+        		"AbstractAction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getComponentInternalBehavior_ImplAccess().getRightCurlyBracketKeyword_3_4());
+    }
+)?	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getComponentInternalBehavior_ImplAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStartAction
+entryRuleStartAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStartActionRule()); }
+	 iv_ruleStartAction=ruleStartAction 
+	 { $current=$iv_ruleStartAction.current; } 
+	 EOF 
+;
+
+// Rule StartAction
+ruleStartAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStartActionAccess().getStartActionAction_0(),
+            $current);
+    }
+)	otherlv_1='StartAction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStartActionAccess().getStartActionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStartActionAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='predecessor' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStartActionAccess().getPredecessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStartActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getStartActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_5='successor' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStartActionAccess().getSuccessorKeyword_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStartActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getStartActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getStartActionAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleStopAction
+entryRuleStopAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getStopActionRule()); }
+	 iv_ruleStopAction=ruleStopAction 
+	 { $current=$iv_ruleStopAction.current; } 
+	 EOF 
+;
+
+// Rule StopAction
+ruleStopAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getStopActionAccess().getStopActionAction_0(),
+            $current);
+    }
+)	otherlv_1='StopAction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getStopActionAccess().getStopActionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getStopActionAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='predecessor' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getStopActionAccess().getPredecessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStopActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getStopActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_5='successor' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getStopActionAccess().getSuccessorKeyword_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getStopActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getStopActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getStopActionAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAcquireAction
+entryRuleAcquireAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAcquireActionRule()); }
+	 iv_ruleAcquireAction=ruleAcquireAction 
+	 { $current=$iv_ruleAcquireAction.current; } 
+	 EOF 
+;
+
+// Rule AcquireAction
+ruleAcquireAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='AcquireAction' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getAcquireActionAccess().getAcquireActionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getAcquireActionAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='predecessor' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getAcquireActionAccess().getPredecessorKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAcquireActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAcquireActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='successor' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAcquireActionAccess().getSuccessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAcquireActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAcquireActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_6='passiveResource' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getAcquireActionAccess().getPassiveResourceKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAcquireActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAcquireActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getAcquireActionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleReleaseAction
+entryRuleReleaseAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getReleaseActionRule()); }
+	 iv_ruleReleaseAction=ruleReleaseAction 
+	 { $current=$iv_ruleReleaseAction.current; } 
+	 EOF 
+;
+
+// Rule ReleaseAction
+ruleReleaseAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ReleaseAction' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getReleaseActionAccess().getReleaseActionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getReleaseActionAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='predecessor' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getReleaseActionAccess().getPredecessorKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReleaseActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getReleaseActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='successor' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getReleaseActionAccess().getSuccessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReleaseActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getReleaseActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_6='passiveResource' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getReleaseActionAccess().getPassiveResourceKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getReleaseActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getReleaseActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getReleaseActionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleInternalAction
+entryRuleInternalAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInternalActionRule()); }
+	 iv_ruleInternalAction=ruleInternalAction 
+	 { $current=$iv_ruleInternalAction.current; } 
+	 EOF 
+;
+
+// Rule InternalAction
+ruleInternalAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getInternalActionAccess().getInternalActionAction_0(),
+            $current);
+    }
+)	otherlv_1='InternalAction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getInternalActionAccess().getInternalActionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getInternalActionAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='predecessor' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getInternalActionAccess().getPredecessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInternalActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getInternalActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_5='successor' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getInternalActionAccess().getSuccessorKeyword_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInternalActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getInternalActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_7='resourceDemandSpecification' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getInternalActionAccess().getResourceDemandSpecificationKeyword_5_0());
+    }
+	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getInternalActionAccess().getLeftCurlyBracketKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInternalActionAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_2_0()); 
+	    }
+		lv_resourceDemandSpecification_9_0=ruleResourceDemandSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInternalActionRule());
+	        }
+       		add(
+       			$current, 
+       			"resourceDemandSpecification",
+        		lv_resourceDemandSpecification_9_0, 
+        		"ResourceDemandSpecification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getInternalActionAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInternalActionAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_3_1_0()); 
+	    }
+		lv_resourceDemandSpecification_11_0=ruleResourceDemandSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInternalActionRule());
+	        }
+       		add(
+       			$current, 
+       			"resourceDemandSpecification",
+        		lv_resourceDemandSpecification_11_0, 
+        		"ResourceDemandSpecification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getInternalActionAccess().getRightCurlyBracketKeyword_5_4());
+    }
+)?	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getInternalActionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleForkAction
+entryRuleForkAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getForkActionRule()); }
+	 iv_ruleForkAction=ruleForkAction 
+	 { $current=$iv_ruleForkAction.current; } 
+	 EOF 
+;
+
+// Rule ForkAction
+ruleForkAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_withSynchronizationBarrier_0_0=	'withSynchronizationBarrier' 
+    {
+        newLeafNode(lv_withSynchronizationBarrier_0_0, grammarAccess.getForkActionAccess().getWithSynchronizationBarrierWithSynchronizationBarrierKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getForkActionRule());
+	        }
+       		setWithLastConsumed($current, "withSynchronizationBarrier", true, "withSynchronizationBarrier");
+	    }
+
+)
+)	otherlv_1='ForkAction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getForkActionAccess().getForkActionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getForkActionAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='predecessor' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getForkActionAccess().getPredecessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getForkActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getForkActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_5='successor' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getForkActionAccess().getSuccessorKeyword_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getForkActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getForkActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_7='forkedBehaviors' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getForkActionAccess().getForkedBehaviorsKeyword_5_0());
+    }
+	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getForkActionAccess().getLeftCurlyBracketKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getForkActionAccess().getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_2_0()); 
+	    }
+		lv_forkedBehaviors_9_0=ruleComponentInternalBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getForkActionRule());
+	        }
+       		add(
+       			$current, 
+       			"forkedBehaviors",
+        		lv_forkedBehaviors_9_0, 
+        		"ComponentInternalBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getForkActionAccess().getCommaKeyword_5_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getForkActionAccess().getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_3_1_0()); 
+	    }
+		lv_forkedBehaviors_11_0=ruleComponentInternalBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getForkActionRule());
+	        }
+       		add(
+       			$current, 
+       			"forkedBehaviors",
+        		lv_forkedBehaviors_11_0, 
+        		"ComponentInternalBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getForkActionAccess().getRightCurlyBracketKeyword_5_4());
+    }
+)?	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getForkActionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBranchAction
+entryRuleBranchAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBranchActionRule()); }
+	 iv_ruleBranchAction=ruleBranchAction 
+	 { $current=$iv_ruleBranchAction.current; } 
+	 EOF 
+;
+
+// Rule BranchAction
+ruleBranchAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='BranchAction' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getBranchActionAccess().getBranchActionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='predecessor' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBranchActionAccess().getPredecessorKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBranchActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBranchActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='successor' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getBranchActionAccess().getSuccessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBranchActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBranchActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_6='branches' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getBranchActionAccess().getBranchesKeyword_4_0());
+    }
+	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBranchActionAccess().getBranchesBranchTransitionParserRuleCall_4_2_0()); 
+	    }
+		lv_branches_8_0=ruleBranchTransition		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBranchActionRule());
+	        }
+       		add(
+       			$current, 
+       			"branches",
+        		lv_branches_8_0, 
+        		"BranchTransition");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getBranchActionAccess().getCommaKeyword_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBranchActionAccess().getBranchesBranchTransitionParserRuleCall_4_3_1_0()); 
+	    }
+		lv_branches_10_0=ruleBranchTransition		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBranchActionRule());
+	        }
+       		add(
+       			$current, 
+       			"branches",
+        		lv_branches_10_0, 
+        		"BranchTransition");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11='}' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_4_4());
+    }
+)?	otherlv_12='branchProbabilities' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getBranchActionAccess().getBranchProbabilitiesKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBranchActionAccess().getBranchProbabilitiesBranchProbabilitiesParserRuleCall_6_0()); 
+	    }
+		lv_branchProbabilities_13_0=ruleBranchProbabilities		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBranchActionRule());
+	        }
+       		set(
+       			$current, 
+       			"branchProbabilities",
+        		lv_branchProbabilities_13_0, 
+        		"BranchProbabilities");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_14='}' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLoopAction
+entryRuleLoopAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLoopActionRule()); }
+	 iv_ruleLoopAction=ruleLoopAction 
+	 { $current=$iv_ruleLoopAction.current; } 
+	 EOF 
+;
+
+// Rule LoopAction
+ruleLoopAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='LoopAction' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLoopActionAccess().getLoopActionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='predecessor' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLoopActionAccess().getPredecessorKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLoopActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLoopActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='successor' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLoopActionAccess().getSuccessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLoopActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLoopActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_6='loopBodyBehavior' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getLoopActionAccess().getLoopBodyBehaviorKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLoopActionAccess().getLoopBodyBehaviorComponentInternalBehaviorParserRuleCall_5_0()); 
+	    }
+		lv_loopBodyBehavior_7_0=ruleComponentInternalBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLoopActionRule());
+	        }
+       		set(
+       			$current, 
+       			"loopBodyBehavior",
+        		lv_loopBodyBehavior_7_0, 
+        		"ComponentInternalBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='loopIterationCountDistribution' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getLoopActionAccess().getLoopIterationCountDistributionKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLoopActionAccess().getLoopIterationCountDistributionLoopIterationCountDistributionParserRuleCall_7_0()); 
+	    }
+		lv_loopIterationCountDistribution_9_0=ruleLoopIterationCountDistribution		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLoopActionRule());
+	        }
+       		set(
+       			$current, 
+       			"loopIterationCountDistribution",
+        		lv_loopIterationCountDistribution_9_0, 
+        		"LoopIterationCountDistribution");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExternalCallAction
+entryRuleExternalCallAction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExternalCallActionRule()); }
+	 iv_ruleExternalCallAction=ruleExternalCallAction 
+	 { $current=$iv_ruleExternalCallAction.current; } 
+	 EOF 
+;
+
+// Rule ExternalCallAction
+ruleExternalCallAction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ExternalCallAction' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getExternalCallActionAccess().getExternalCallActionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getExternalCallActionAccess().getLeftCurlyBracketKeyword_1());
+    }
+(	otherlv_2='predecessor' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExternalCallActionAccess().getPredecessorKeyword_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='successor' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getExternalCallActionAccess().getSuccessorKeyword_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_6='signature' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getExternalCallActionAccess().getSignatureKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getSignatureSignatureCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='requiredRole' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getExternalCallActionAccess().getRequiredRoleKeyword_6());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCallActionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getRequiredRoleRequiredRoleCrossReference_7_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getExternalCallActionAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePassiveResourceSpecification
+entryRulePassiveResourceSpecification returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPassiveResourceSpecificationRule()); }
+	 iv_rulePassiveResourceSpecification=rulePassiveResourceSpecification 
+	 { $current=$iv_rulePassiveResourceSpecification.current; } 
+	 EOF 
+;
+
+// Rule PassiveResourceSpecification
+rulePassiveResourceSpecification returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='PassiveResourceSpecification' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceSpecificationKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPassiveResourceSpecificationRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPassiveResourceSpecificationAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPassiveResourceSpecificationAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPassiveResourceSpecificationRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='passiveResourceType' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypeKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPassiveResourceSpecificationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypePassiveResourceTypeCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='capacity' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPassiveResourceSpecificationAccess().getCapacityKeyword_7());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getCapacityPassiveResourceCapacityParserRuleCall_8_0()); 
+	    }
+		lv_capacity_8_0=rulePassiveResourceCapacity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPassiveResourceSpecificationRule());
+	        }
+       		set(
+       			$current, 
+       			"capacity",
+        		lv_capacity_8_0, 
+        		"PassiveResourceCapacity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getPassiveResourceSpecificationAccess().getRightCurlyBracketKeyword_9());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePassiveResourceCapacity
+entryRulePassiveResourceCapacity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPassiveResourceCapacityRule()); }
+	 iv_rulePassiveResourceCapacity=rulePassiveResourceCapacity 
+	 { $current=$iv_rulePassiveResourceCapacity.current; } 
+	 EOF 
+;
+
+// Rule PassiveResourceCapacity
+rulePassiveResourceCapacity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='PassiveResourceCapacity' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPassiveResourceCapacityAccess().getPassiveResourceCapacityKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPassiveResourceCapacityAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPassiveResourceCapacityRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPassiveResourceCapacityAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPassiveResourceCapacityAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPassiveResourceCapacityAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPassiveResourceCapacityRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='capacity' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getPassiveResourceCapacityAccess().getCapacityKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPassiveResourceCapacityAccess().getCapacityEBigIntegerParserRuleCall_6_0()); 
+	    }
+		lv_capacity_6_0=ruleEBigInteger		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPassiveResourceCapacityRule());
+	        }
+       		set(
+       			$current, 
+       			"capacity",
+        		lv_capacity_6_0, 
+        		"EBigInteger");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPassiveResourceCapacityAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEBigInteger
+entryRuleEBigInteger returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEBigIntegerRule()); } 
+	 iv_ruleEBigInteger=ruleEBigInteger 
+	 { $current=$iv_ruleEBigInteger.current.getText(); }  
+	 EOF 
+;
+
+// Rule EBigInteger
+ruleEBigInteger returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); 
+    }
+)?    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleResourceDemandSpecification
+entryRuleResourceDemandSpecification returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResourceDemandSpecificationRule()); }
+	 iv_ruleResourceDemandSpecification=ruleResourceDemandSpecification 
+	 { $current=$iv_ruleResourceDemandSpecification.current; } 
+	 EOF 
+;
+
+// Rule ResourceDemandSpecification
+ruleResourceDemandSpecification returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ResourceDemandSpecification' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getResourceDemandSpecificationAccess().getResourceDemandSpecificationKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getResourceDemandSpecificationAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='processingResourceType' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getResourceDemandSpecificationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeProcessingResourceTypeCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getResourceDemandSpecificationAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleProcessingResourceType_Impl
+entryRuleProcessingResourceType_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProcessingResourceType_ImplRule()); }
+	 iv_ruleProcessingResourceType_Impl=ruleProcessingResourceType_Impl 
+	 { $current=$iv_ruleProcessingResourceType_Impl.current; } 
+	 EOF 
+;
+
+// Rule ProcessingResourceType_Impl
+ruleProcessingResourceType_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ProcessingResourceType' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getProcessingResourceType_ImplAccess().getProcessingResourceTypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProcessingResourceType_ImplAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProcessingResourceType_ImplRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getProcessingResourceType_ImplAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getProcessingResourceType_ImplAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProcessingResourceType_ImplAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProcessingResourceType_ImplRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getProcessingResourceType_ImplAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCommunicationLinkResourceType
+entryRuleCommunicationLinkResourceType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCommunicationLinkResourceTypeRule()); }
+	 iv_ruleCommunicationLinkResourceType=ruleCommunicationLinkResourceType 
+	 { $current=$iv_ruleCommunicationLinkResourceType.current; } 
+	 EOF 
+;
+
+// Rule CommunicationLinkResourceType
+ruleCommunicationLinkResourceType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CommunicationLinkResourceType' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCommunicationLinkResourceTypeAccess().getCommunicationLinkResourceTypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCommunicationLinkResourceTypeAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCommunicationLinkResourceTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCommunicationLinkResourceTypeAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCommunicationLinkResourceTypeAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCommunicationLinkResourceTypeAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCommunicationLinkResourceTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCommunicationLinkResourceTypeAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleBranchTransition
+entryRuleBranchTransition returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBranchTransitionRule()); }
+	 iv_ruleBranchTransition=ruleBranchTransition 
+	 { $current=$iv_ruleBranchTransition.current; } 
+	 EOF 
+;
+
+// Rule BranchTransition
+ruleBranchTransition returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='BranchTransition' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getBranchTransitionAccess().getBranchTransitionKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBranchTransitionAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBranchTransitionRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBranchTransitionAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getBranchTransitionAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBranchTransitionAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBranchTransitionRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='branchBehavior' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getBranchTransitionAccess().getBranchBehaviorKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBranchTransitionAccess().getBranchBehaviorComponentInternalBehaviorParserRuleCall_6_0()); 
+	    }
+		lv_branchBehavior_6_0=ruleComponentInternalBehavior		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBranchTransitionRule());
+	        }
+       		set(
+       			$current, 
+       			"branchBehavior",
+        		lv_branchBehavior_6_0, 
+        		"ComponentInternalBehavior");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getBranchTransitionAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBranchProbabilities
+entryRuleBranchProbabilities returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBranchProbabilitiesRule()); }
+	 iv_ruleBranchProbabilities=ruleBranchProbabilities 
+	 { $current=$iv_ruleBranchProbabilities.current; } 
+	 EOF 
+;
+
+// Rule BranchProbabilities
+ruleBranchProbabilities returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='BranchProbabilities' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getBranchProbabilitiesAccess().getBranchProbabilitiesKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBranchProbabilitiesAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='probabilities' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBranchProbabilitiesRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesRandomVariableCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getBranchProbabilitiesAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleProbabilityMassFunction
+entryRuleProbabilityMassFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProbabilityMassFunctionRule()); }
+	 iv_ruleProbabilityMassFunction=ruleProbabilityMassFunction 
+	 { $current=$iv_ruleProbabilityMassFunction.current; } 
+	 EOF 
+;
+
+// Rule ProbabilityMassFunction
+ruleProbabilityMassFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0(),
+            $current);
+    }
+)	otherlv_1='ProbabilityMassFunction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='sample' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0());
+    }
+	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); 
+	    }
+		lv_sample_5_0=ruleSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_5_0, 
+        		"Sample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); 
+	    }
+		lv_sample_7_0=ruleSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_7_0, 
+        		"Sample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4());
+    }
+)?	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleProbabilityDensityFunction_Impl
+entryRuleProbabilityDensityFunction_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProbabilityDensityFunction_ImplRule()); }
+	 iv_ruleProbabilityDensityFunction_Impl=ruleProbabilityDensityFunction_Impl 
+	 { $current=$iv_ruleProbabilityDensityFunction_Impl.current; } 
+	 EOF 
+;
+
+// Rule ProbabilityDensityFunction_Impl
+ruleProbabilityDensityFunction_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionAction_0(),
+            $current);
+    }
+)	otherlv_1='ProbabilityDensityFunction' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBoxedPDF
+entryRuleBoxedPDF returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBoxedPDFRule()); }
+	 iv_ruleBoxedPDF=ruleBoxedPDF 
+	 { $current=$iv_ruleBoxedPDF.current; } 
+	 EOF 
+;
+
+// Rule BoxedPDF
+ruleBoxedPDF returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0(),
+            $current);
+    }
+)	otherlv_1='BoxedPDF' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='sample' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0());
+    }
+	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); 
+	    }
+		lv_sample_5_0=ruleContinuousSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_5_0, 
+        		"ContinuousSample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); 
+	    }
+		lv_sample_7_0=ruleContinuousSample		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+	        }
+       		add(
+       			$current, 
+       			"sample",
+        		lv_sample_7_0, 
+        		"ContinuousSample");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4());
+    }
+)?	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleContinuousPDF_Impl
+entryRuleContinuousPDF_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getContinuousPDF_ImplRule()); }
+	 iv_ruleContinuousPDF_Impl=ruleContinuousPDF_Impl 
+	 { $current=$iv_ruleContinuousPDF_Impl.current; } 
+	 EOF 
+;
+
+// Rule ContinuousPDF_Impl
+ruleContinuousPDF_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFAction_0(),
+            $current);
+    }
+)	otherlv_1='ContinuousPDF' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleNormalDistribution
+entryRuleNormalDistribution returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getNormalDistributionRule()); }
+	 iv_ruleNormalDistribution=ruleNormalDistribution 
+	 { $current=$iv_ruleNormalDistribution.current; } 
+	 EOF 
+;
+
+// Rule NormalDistribution
+ruleNormalDistribution returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='NormalDistribution' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='mu' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getNormalDistributionAccess().getMuKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_mu_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+	        }
+       		set(
+       			$current, 
+       			"mu",
+        		lv_mu_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='sigma' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); 
+	    }
+		lv_sigma_5_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+	        }
+       		set(
+       			$current, 
+       			"sigma",
+        		lv_sigma_5_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExponentialDistribution
+entryRuleExponentialDistribution returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExponentialDistributionRule()); }
+	 iv_ruleExponentialDistribution=ruleExponentialDistribution 
+	 { $current=$iv_ruleExponentialDistribution.current; } 
+	 EOF 
+;
+
+// Rule ExponentialDistribution
+ruleExponentialDistribution returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ExponentialDistribution' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='rate' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExponentialDistributionAccess().getRateKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_rate_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExponentialDistributionRule());
+	        }
+       		set(
+       			$current, 
+       			"rate",
+        		lv_rate_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSample
+entryRuleSample returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSampleRule()); }
+	 iv_ruleSample=ruleSample 
+	 { $current=$iv_ruleSample.current; } 
+	 EOF 
+;
+
+// Rule Sample
+ruleSample returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Sample' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSampleAccess().getSampleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='probability' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getSampleAccess().getProbabilityKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_probability_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSampleRule());
+	        }
+       		set(
+       			$current, 
+       			"probability",
+        		lv_probability_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='value' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getSampleAccess().getValueKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSampleRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEBigDecimal
+entryRuleEBigDecimal returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEBigDecimalRule()); } 
+	 iv_ruleEBigDecimal=ruleEBigDecimal 
+	 { $current=$iv_ruleEBigDecimal.current.getText(); }  
+	 EOF 
+;
+
+// Rule EBigDecimal
+ruleEBigDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); 
+    }
+)?
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleContinuousSample
+entryRuleContinuousSample returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getContinuousSampleRule()); }
+	 iv_ruleContinuousSample=ruleContinuousSample 
+	 { $current=$iv_ruleContinuousSample.current; } 
+	 EOF 
+;
+
+// Rule ContinuousSample
+ruleContinuousSample returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ContinuousSample' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='value' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getContinuousSampleAccess().getValueKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+	    }
+		lv_value_3_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='probability' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); 
+	    }
+		lv_probability_5_0=ruleEBigDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+	        }
+       		set(
+       			$current, 
+       			"probability",
+        		lv_probability_5_0, 
+        		"EBigDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLoopIterationCountDistribution
+entryRuleLoopIterationCountDistribution returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLoopIterationCountDistributionRule()); }
+	 iv_ruleLoopIterationCountDistribution=ruleLoopIterationCountDistribution 
+	 { $current=$iv_ruleLoopIterationCountDistribution.current; } 
+	 EOF 
+;
+
+// Rule LoopIterationCountDistribution
+ruleLoopIterationCountDistribution returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='LoopIterationCountDistribution' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLoopIterationCountDistributionAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='loopIterationCountDistribution' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getLoopIterationCountDistributionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionRandomVariableCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getLoopIterationCountDistributionAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAssemblyContext
+entryRuleAssemblyContext returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAssemblyContextRule()); }
+	 iv_ruleAssemblyContext=ruleAssemblyContext 
+	 { $current=$iv_ruleAssemblyContext.current; } 
+	 EOF 
+;
+
+// Rule AssemblyContext
+ruleAssemblyContext returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='AssemblyContext' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getAssemblyContextAccess().getAssemblyContextKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyContextAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAssemblyContextRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getAssemblyContextAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getAssemblyContextAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyContextAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAssemblyContextRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='encapsulatedComponent' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAssemblyContextRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentRepositoryComponentCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getAssemblyContextAccess().getRightCurlyBracketKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleAssemblyConnector
+entryRuleAssemblyConnector returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAssemblyConnectorRule()); }
+	 iv_ruleAssemblyConnector=ruleAssemblyConnector 
+	 { $current=$iv_ruleAssemblyConnector.current; } 
+	 EOF 
+;
+
+// Rule AssemblyConnector
+ruleAssemblyConnector returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='AssemblyConnector' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getAssemblyConnectorAccess().getAssemblyConnectorKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAssemblyConnectorRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getAssemblyConnectorAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getAssemblyConnectorAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAssemblyConnectorRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='requiredRole' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getAssemblyConnectorAccess().getRequiredRoleKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getRequiredRoleRequiredRoleCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='providedRole' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getAssemblyConnectorAccess().getProvidedRoleKeyword_7());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getProvidedRoleProvidedRoleCrossReference_8_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='providingAssemblyContext' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextKeyword_9());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextAssemblyContextCrossReference_10_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_11='requiringAssemblyContext' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextKeyword_11());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextAssemblyContextCrossReference_12_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getAssemblyConnectorAccess().getRightCurlyBracketKeyword_13());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleProvidedDelegationConnector
+entryRuleProvidedDelegationConnector returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getProvidedDelegationConnectorRule()); }
+	 iv_ruleProvidedDelegationConnector=ruleProvidedDelegationConnector 
+	 { $current=$iv_ruleProvidedDelegationConnector.current; } 
+	 EOF 
+;
+
+// Rule ProvidedDelegationConnector
+ruleProvidedDelegationConnector returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ProvidedDelegationConnector' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getProvidedDelegationConnectorAccess().getProvidedDelegationConnectorKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProvidedDelegationConnectorRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getProvidedDelegationConnectorAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getProvidedDelegationConnectorAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getProvidedDelegationConnectorRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='assemblyContext' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getProvidedDelegationConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='innerProvidedRole' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleKeyword_7());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getProvidedDelegationConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleProvidedRoleCrossReference_8_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='outerProvidedRole' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleKeyword_9());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getProvidedDelegationConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleProvidedRoleCrossReference_10_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_11='}' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getProvidedDelegationConnectorAccess().getRightCurlyBracketKeyword_11());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRequiredDelegationConnector
+entryRuleRequiredDelegationConnector returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRequiredDelegationConnectorRule()); }
+	 iv_ruleRequiredDelegationConnector=ruleRequiredDelegationConnector 
+	 { $current=$iv_ruleRequiredDelegationConnector.current; } 
+	 EOF 
+;
+
+// Rule RequiredDelegationConnector
+ruleRequiredDelegationConnector returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='RequiredDelegationConnector' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getRequiredDelegationConnectorAccess().getRequiredDelegationConnectorKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getIdEStringParserRuleCall_1_0()); 
+	    }
+		lv_id_1_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRequiredDelegationConnectorRule());
+	        }
+       		set(
+       			$current, 
+       			"id",
+        		lv_id_1_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getRequiredDelegationConnectorAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='name' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getRequiredDelegationConnectorAccess().getNameKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getNameEStringParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleEString		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRequiredDelegationConnectorRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"EString");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='assemblyContext' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRequiredDelegationConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='innerRequiredRole' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleKeyword_7());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRequiredDelegationConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleRequiredRoleCrossReference_8_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9='outerRequiredRole' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleKeyword_9());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRequiredDelegationConnectorRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleRequiredRoleCrossReference_10_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_11='}' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getRequiredDelegationConnectorAccess().getRightCurlyBracketKeyword_11());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExternalCall_Impl
+entryRuleExternalCall_Impl returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExternalCall_ImplRule()); }
+	 iv_ruleExternalCall_Impl=ruleExternalCall_Impl 
+	 { $current=$iv_ruleExternalCall_Impl.current; } 
+	 EOF 
+;
+
+// Rule ExternalCall_Impl
+ruleExternalCall_Impl returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ExternalCall' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getExternalCall_ImplAccess().getExternalCallKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getExternalCall_ImplAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='signature' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExternalCall_ImplAccess().getSignatureKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCall_ImplRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCall_ImplAccess().getSignatureSignatureCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='requiredRole' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getExternalCall_ImplAccess().getRequiredRoleKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExternalCall_ImplRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCall_ImplAccess().getRequiredRoleRequiredRoleCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getExternalCall_ImplAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleExternalCallFrequency
+entryRuleExternalCallFrequency returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExternalCallFrequencyRule()); }
+	 iv_ruleExternalCallFrequency=ruleExternalCallFrequency 
+	 { $current=$iv_ruleExternalCallFrequency.current; } 
+	 EOF 
+;
+
+// Rule ExternalCallFrequency
+ruleExternalCallFrequency returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='ExternalCallFrequency' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getExternalCallFrequencyAccess().getExternalCallFrequencyKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getExternalCallFrequencyAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='externalCall' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getExternalCallFrequencyAccess().getExternalCallKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallFrequencyAccess().getExternalCallExternalCallParserRuleCall_3_0()); 
+	    }
+		lv_externalCall_3_0=ruleExternalCall		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallFrequencyRule());
+	        }
+       		set(
+       			$current, 
+       			"externalCall",
+        		lv_externalCall_3_0, 
+        		"ExternalCall");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='frequency' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getExternalCallFrequencyAccess().getFrequencyKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getExternalCallFrequencyAccess().getFrequencyCallFrequencyParserRuleCall_5_0()); 
+	    }
+		lv_frequency_5_0=ruleCallFrequency		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getExternalCallFrequencyRule());
+	        }
+       		set(
+       			$current, 
+       			"frequency",
+        		lv_frequency_5_0, 
+        		"CallFrequency");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getExternalCallFrequencyAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCallFrequency
+entryRuleCallFrequency returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCallFrequencyRule()); }
+	 iv_ruleCallFrequency=ruleCallFrequency 
+	 { $current=$iv_ruleCallFrequency.current; } 
+	 EOF 
+;
+
+// Rule CallFrequency
+ruleCallFrequency returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CallFrequency' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCallFrequencyAccess().getCallFrequencyKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCallFrequencyAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='frequency' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCallFrequencyAccess().getFrequencyKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCallFrequencyRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCallFrequencyAccess().getFrequencyRandomVariableCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getCallFrequencyAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDependencyRelationship
+entryRuleDependencyRelationship returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDependencyRelationshipRule()); }
+	 iv_ruleDependencyRelationship=ruleDependencyRelationship 
+	 { $current=$iv_ruleDependencyRelationship.current; } 
+	 EOF 
+;
+
+// Rule DependencyRelationship
+ruleDependencyRelationship returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='DependencyRelationship' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDependencyRelationshipAccess().getDependencyRelationshipKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDependencyRelationshipAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='surroundingEntity' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDependencyRelationshipRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='influencedVariable' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDependencyRelationshipRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableInfluencedVariableCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='influencingParameter' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterKeyword_6());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDependencyRelationshipRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterInfluencingParameterCrossReference_7_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDependencyRelationshipAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCorrelationRelationship
+entryRuleCorrelationRelationship returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCorrelationRelationshipRule()); }
+	 iv_ruleCorrelationRelationship=ruleCorrelationRelationship 
+	 { $current=$iv_ruleCorrelationRelationship.current; } 
+	 EOF 
+;
+
+// Rule CorrelationRelationship
+ruleCorrelationRelationship returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='CorrelationRelationship' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCorrelationRelationshipAccess().getCorrelationRelationshipKeyword_0());
+    }
+	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCorrelationRelationshipAccess().getLeftCurlyBracketKeyword_1());
+    }
+	otherlv_2='surroundingEntity' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCorrelationRelationshipRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='leftInfluencingParameter' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterKeyword_4());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCorrelationRelationshipRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterInfluencingParameterCrossReference_5_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='rightInfluencingParameter' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterKeyword_6());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCorrelationRelationshipRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterInfluencingParameterCrossReference_7_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8='leftComponentInstanceReference' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getCorrelationRelationshipAccess().getLeftComponentInstanceReferenceKeyword_8());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getLeftComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_9_0()); 
+	    }
+		lv_leftComponentInstanceReference_9_0=ruleComponentInstanceReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCorrelationRelationshipRule());
+	        }
+       		set(
+       			$current, 
+       			"leftComponentInstanceReference",
+        		lv_leftComponentInstanceReference_9_0, 
+        		"ComponentInstanceReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_10='rightComponentInstanceReference' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getCorrelationRelationshipAccess().getRightComponentInstanceReferenceKeyword_10());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getRightComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_11_0()); 
+	    }
+		lv_rightComponentInstanceReference_11_0=ruleComponentInstanceReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCorrelationRelationshipRule());
+	        }
+       		set(
+       			$current, 
+       			"rightComponentInstanceReference",
+        		lv_rightComponentInstanceReference_11_0, 
+        		"ComponentInstanceReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getCorrelationRelationshipAccess().getRightCurlyBracketKeyword_12());
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleComponentInstanceReference
+entryRuleComponentInstanceReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getComponentInstanceReferenceRule()); }
+	 iv_ruleComponentInstanceReference=ruleComponentInstanceReference 
+	 { $current=$iv_ruleComponentInstanceReference.current; } 
+	 EOF 
+;
+
+// Rule ComponentInstanceReference
+ruleComponentInstanceReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getComponentInstanceReferenceAccess().getComponentInstanceReferenceAction_0(),
+            $current);
+    }
+)	otherlv_1='ComponentInstanceReference' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getComponentInstanceReferenceAccess().getComponentInstanceReferenceKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getComponentInstanceReferenceAccess().getLeftCurlyBracketKeyword_2());
+    }
+(	otherlv_3='assemblies' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getComponentInstanceReferenceAccess().getAssembliesKeyword_3_0());
+    }
+	otherlv_4='(' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getComponentInstanceReferenceAccess().getLeftParenthesisKeyword_3_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getComponentInstanceReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_2_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=',' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getComponentInstanceReferenceAccess().getCommaKeyword_3_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getComponentInstanceReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_3_1_0()); 
+	    }
+		ruleEString		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getComponentInstanceReferenceAccess().getRightParenthesisKeyword_3_4());
+    }
+)?	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getComponentInstanceReferenceAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Rule PrimitiveTypeEnum
+rulePrimitiveTypeEnum returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='INT' 
+	{
+        $current = grammarAccess.getPrimitiveTypeEnumAccess().getINTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getPrimitiveTypeEnumAccess().getINTEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='STRING' 
+	{
+        $current = grammarAccess.getPrimitiveTypeEnumAccess().getSTRINGEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getPrimitiveTypeEnumAccess().getSTRINGEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='BOOL' 
+	{
+        $current = grammarAccess.getPrimitiveTypeEnumAccess().getBOOLEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getPrimitiveTypeEnumAccess().getBOOLEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='DOUBLE' 
+	{
+        $current = grammarAccess.getPrimitiveTypeEnumAccess().getDOUBLEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getPrimitiveTypeEnumAccess().getDOUBLEEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='CHAR' 
+	{
+        $current = grammarAccess.getPrimitiveTypeEnumAccess().getCHAREnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getPrimitiveTypeEnumAccess().getCHAREnumLiteralDeclaration_4()); 
+    }
+)
+    |(	enumLiteral_5='BYTE' 
+	{
+        $current = grammarAccess.getPrimitiveTypeEnumAccess().getBYTEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_5, grammarAccess.getPrimitiveTypeEnumAccess().getBYTEEnumLiteralDeclaration_5()); 
+    }
+)
+    |(	enumLiteral_6='LONG' 
+	{
+        $current = grammarAccess.getPrimitiveTypeEnumAccess().getLONGEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_6, grammarAccess.getPrimitiveTypeEnumAccess().getLONGEnumLiteralDeclaration_6()); 
+    }
+));
+
+
+
+// Rule ParameterModifier
+ruleParameterModifier returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='NONE' 
+	{
+        $current = grammarAccess.getParameterModifierAccess().getNONEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getParameterModifierAccess().getNONEEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='IN' 
+	{
+        $current = grammarAccess.getParameterModifierAccess().getINEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getParameterModifierAccess().getINEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='OUT' 
+	{
+        $current = grammarAccess.getParameterModifierAccess().getOUTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getParameterModifierAccess().getOUTEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='INOUT' 
+	{
+        $current = grammarAccess.getParameterModifierAccess().getINOUTEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getParameterModifierAccess().getINOUTEnumLiteralDeclaration_3()); 
+    }
+));
+
+
+
+// Rule CharacterizationType
+ruleCharacterizationType returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='VALUE' 
+	{
+        $current = grammarAccess.getCharacterizationTypeAccess().getVALUEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getCharacterizationTypeAccess().getVALUEEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='NUMBER_OF_ELEMENTS' 
+	{
+        $current = grammarAccess.getCharacterizationTypeAccess().getNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getCharacterizationTypeAccess().getNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1()); 
+    }
+));
+
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'"')))* '"'|'\'' ('\\' ('b'|'t'|'n'|'f'|'r'|'u'|'"'|'\''|'\\')|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.tokens b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.tokens
new file mode 100644
index 0000000000000000000000000000000000000000..8c12d11dab1d82437dcfbead4ff3012c4b73da08
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.tokens
@@ -0,0 +1,329 @@
+RULE_ID=5
+T__29=29
+T__28=28
+T__159=159
+T__27=27
+T__158=158
+T__26=26
+T__25=25
+T__24=24
+T__23=23
+T__22=22
+RULE_ANY_OTHER=10
+T__21=21
+T__20=20
+T__160=160
+T__167=167
+T__168=168
+T__165=165
+T__166=166
+T__163=163
+T__164=164
+T__161=161
+T__162=162
+T__93=93
+T__19=19
+T__94=94
+T__91=91
+T__92=92
+T__148=148
+T__16=16
+T__147=147
+T__15=15
+T__90=90
+T__18=18
+T__149=149
+T__17=17
+T__12=12
+T__11=11
+T__14=14
+T__13=13
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__99=99
+T__150=150
+T__98=98
+T__151=151
+T__97=97
+T__152=152
+T__96=96
+T__153=153
+T__95=95
+T__139=139
+T__138=138
+T__137=137
+T__136=136
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__141=141
+T__85=85
+T__142=142
+T__84=84
+T__87=87
+T__140=140
+T__86=86
+T__145=145
+T__89=89
+T__146=146
+T__88=88
+RULE_ML_COMMENT=7
+T__143=143
+T__144=144
+T__126=126
+T__125=125
+T__128=128
+RULE_STRING=4
+T__127=127
+T__71=71
+T__129=129
+T__72=72
+T__70=70
+T__76=76
+T__75=75
+T__130=130
+T__74=74
+T__131=131
+T__73=73
+T__132=132
+T__133=133
+T__79=79
+T__134=134
+T__78=78
+T__135=135
+T__77=77
+T__68=68
+T__69=69
+T__66=66
+T__67=67
+T__64=64
+T__65=65
+T__62=62
+T__63=63
+T__118=118
+T__119=119
+T__116=116
+T__117=117
+T__114=114
+T__115=115
+T__124=124
+T__123=123
+T__122=122
+T__121=121
+T__120=120
+T__61=61
+T__60=60
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__107=107
+T__108=108
+T__109=109
+T__103=103
+T__59=59
+T__104=104
+T__105=105
+T__106=106
+T__111=111
+T__110=110
+RULE_INT=6
+T__113=113
+T__112=112
+T__50=50
+T__42=42
+T__43=43
+T__40=40
+T__41=41
+T__46=46
+T__47=47
+T__44=44
+T__45=45
+T__48=48
+T__49=49
+T__102=102
+T__101=101
+T__100=100
+RULE_SL_COMMENT=8
+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__171=171
+T__170=170
+RULE_WS=9
+T__169=169
+'ContinuousSample'=131
+'rate'=126
+'mu'=123
+'requiredRole'=103
+'frequency'=147
+'type'=36
+'outerProvidedRole'=141
+'requiringAssemblyContext'=137
+'OUT'=168
+'BranchTransition'=113
+'ResponseTimeSpecification'=68
+'Scope'=69
+'probabilities'=116
+'BasicComponent'=55
+'BoxedPDF'=120
+'value'=129
+'innerType'=31
+'ResourceDemandSpecification'=109
+'InnerDeclaration'=37
+'CompositeDataType'=32
+'assemblies'=158
+'components'=18
+'DependencyRelationship'=149
+'passiveResources'=56
+'RequiredRole'=51
+'signature'=73
+'modifier'=43
+'externalCall'=77
+'ExternalCall'=145
+'RequiredDelegationConnector'=142
+'describedSignature'=47
+'{'=12
+'assemblyConnectors'=60
+'AbstractAction'=83
+'Interface'=19
+'ProcessingResourceType'=111
+'Signature'=39
+'parentInterfaces'=20
+'loopBodyBehavior'=100
+'ProbabilityMassFunction'=117
+'('=21
+'innerProvidedRole'=140
+'InternalAction'=92
+'AcquireAction'=89
+'Sample'=127
+'ForkAction'=94
+'INT'=159
+'providedRole'=75
+'providingAssemblyContext'=136
+'NormalDistribution'=122
+'branchBehavior'=114
+'branches'=97
+'InfluencingParameter'=64
+'ComponentInstanceReference'=157
+'relationship'=25
+'rightComponentInstanceReference'=156
+'StopAction'=88
+'forkedBehaviors'=95
+'CommunicationLinkResourceType'=112
+'dataType'=38
+'requiredRoles'=28
+'BranchAction'=96
+'Repository'=11
+'INOUT'=169
+'PassiveResourceCapacity'=107
+'interfaces'=17
+'ServiceInputParameter'=71
+'successor'=85
+'LONG'=165
+'outerRequiredRole'=144
+'NUMBER_OF_ELEMENTS'=171
+'CorrelationRelationship'=152
+'fineGrainedBehavior'=57
+'CoarseGrainedBehavior'=52
+'parameters'=41
+'datatypes'=14
+'LoopAction'=99
+'STRING'=160
+'RepositoryComponent'=24
+'signatures'=23
+'ProbabilityDensityFunction'=119
+'externallCall'=79
+'providedDelegationConnectors'=61
+'Parameter'=42
+'ExternalCallFrequency'=146
+'influencedVariable'=151
+'BlackBoxBehavior'=46
+'ExternalCallReturnParameter'=76
+'BYTE'=164
+'name'=13
+'loopIterationCountDistribution'=101
+'NONE'=166
+'requiredDelegationConnectors'=62
+'resourceDemandSpecification'=54
+'LoopIterationCountDistribution'=132
+'characterization'=72
+'DOUBLE'=162
+'returnType'=40
+'providedRoles'=26
+'ComponentInternalBehavior'=86
+'CallFrequency'=148
+'responseTimeSpecification'=50
+'CompositeComponent'=58
+'.'=130
+'passiveResource'=90
+'branchProbabilities'=98
+'innerRequiredRole'=143
+'processingResourceType'=110
+'basicComponent'=81
+'encapsulatedComponent'=134
+'surroundingEntity'=150
+'describedEntity'=48
+'interfaceProvidingRequiringEntity'=70
+'-'=108
+','=15
+'SubSystem'=63
+'BOOL'=161
+'leftInfluencingParameter'=153
+'sample'=118
+'sigma'=124
+'PassiveResourceSpecification'=104
+'ExternalCallAction'=102
+'ContinuousPDF'=121
+'ExponentialDistribution'=125
+'PrimitiveDataType'=35
+'assemblyContexts'=59
+'BranchProbabilities'=115
+'CHAR'=163
+'parameter'=74
+'probability'=128
+')'=22
+'StartAction'=87
+'parentTypes'=33
+'passiveResourceType'=105
+'AssemblyContext'=133
+'innerDeclarations'=34
+'}'=16
+'AssemblyConnector'=135
+'externalCallFrequency'=53
+'VALUE'=170
+'ProvidedRole'=44
+'ProvidedDelegationConnector'=138
+'CollectionDataType'=30
+'actions'=82
+'IN'=167
+'ReleaseAction'=91
+'ExternalCallParameter'=78
+'description'=65
+'predecessor'=84
+'blackBoxBehavior'=27
+'withSynchronizationBarrier'=93
+'assemblyContext'=139
+'capacity'=106
+'behavior'=66
+'scope'=67
+'FineGrainedBehavior'=80
+'influencingParameter'=49
+'coarseGrainedBehavior'=29
+'leftComponentInstanceReference'=155
+'rightInfluencingParameter'=154
+'interface'=45
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSLLexer.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSLLexer.java
new file mode 100644
index 0000000000000000000000000000000000000000..4dcb5e346abca88a6f40a2bd8147402101ea0721
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSLLexer.java
@@ -0,0 +1,7847 @@
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.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.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRepositoryDSLLexer 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 T__167=167;
+    public static final int T__168=168;
+    public static final int EOF=-1;
+    public static final int T__165=165;
+    public static final int T__166=166;
+    public static final int T__163=163;
+    public static final int T__164=164;
+    public static final int T__161=161;
+    public static final int T__162=162;
+    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__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__73=73;
+    public static final int T__131=131;
+    public static final int T__132=132;
+    public static final int T__79=79;
+    public static final int T__133=133;
+    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 T__171=171;
+    public static final int T__170=170;
+    public static final int RULE_WS=9;
+    public static final int T__169=169;
+
+    // delegates
+    // delegators
+
+    public InternalRepositoryDSLLexer() {;} 
+    public InternalRepositoryDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalRepositoryDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:11:7: ( 'Repository' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:11:9: 'Repository'
+            {
+            match("Repository"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:12:7: ( '{' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:12:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:13:7: ( 'name' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:13:9: 'name'
+            {
+            match("name"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:14:7: ( 'datatypes' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:14:9: 'datatypes'
+            {
+            match("datatypes"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:15:7: ( ',' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:15:9: ','
+            {
+            match(','); 
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:16:7: ( '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:16:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:17:7: ( 'interfaces' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:17:9: 'interfaces'
+            {
+            match("interfaces"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:18:7: ( 'components' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:18:9: 'components'
+            {
+            match("components"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:19:7: ( 'Interface' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:19:9: 'Interface'
+            {
+            match("Interface"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:20:7: ( 'parentInterfaces' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:20:9: 'parentInterfaces'
+            {
+            match("parentInterfaces"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:21:7: ( '(' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:21:9: '('
+            {
+            match('('); 
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:22:7: ( ')' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:22:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:23:7: ( 'signatures' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:23:9: 'signatures'
+            {
+            match("signatures"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:24:7: ( 'RepositoryComponent' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:24:9: 'RepositoryComponent'
+            {
+            match("RepositoryComponent"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:25:7: ( 'relationship' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:25:9: 'relationship'
+            {
+            match("relationship"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:26:7: ( 'providedRoles' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:26:9: 'providedRoles'
+            {
+            match("providedRoles"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:27:7: ( 'blackBoxBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:27:9: 'blackBoxBehavior'
+            {
+            match("blackBoxBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:28:7: ( 'requiredRoles' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:28:9: 'requiredRoles'
+            {
+            match("requiredRoles"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:29:7: ( 'coarseGrainedBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:29:9: 'coarseGrainedBehavior'
+            {
+            match("coarseGrainedBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:30:7: ( 'CollectionDataType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:30:9: 'CollectionDataType'
+            {
+            match("CollectionDataType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:31:7: ( 'innerType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:31:9: 'innerType'
+            {
+            match("innerType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:32:7: ( 'CompositeDataType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:32:9: 'CompositeDataType'
+            {
+            match("CompositeDataType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:33:7: ( 'parentTypes' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:33:9: 'parentTypes'
+            {
+            match("parentTypes"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:34:7: ( 'innerDeclarations' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:34:9: 'innerDeclarations'
+            {
+            match("innerDeclarations"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:35:7: ( 'PrimitiveDataType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:35:9: 'PrimitiveDataType'
+            {
+            match("PrimitiveDataType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:36:7: ( 'type' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:36:9: 'type'
+            {
+            match("type"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:37:7: ( 'InnerDeclaration' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:37:9: 'InnerDeclaration'
+            {
+            match("InnerDeclaration"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:38:7: ( 'dataType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:38:9: 'dataType'
+            {
+            match("dataType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:39:7: ( 'Signature' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:39:9: 'Signature'
+            {
+            match("Signature"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:40:7: ( 'returnType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:40:9: 'returnType'
+            {
+            match("returnType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:41:7: ( 'parameters' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:41:9: 'parameters'
+            {
+            match("parameters"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:42:7: ( 'Parameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:42:9: 'Parameter'
+            {
+            match("Parameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:43:7: ( 'modifier' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:43:9: 'modifier'
+            {
+            match("modifier"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:44:7: ( 'ProvidedRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:44:9: 'ProvidedRole'
+            {
+            match("ProvidedRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:45:7: ( 'interface' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:45:9: 'interface'
+            {
+            match("interface"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:46:7: ( 'BlackBoxBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:46:9: 'BlackBoxBehavior'
+            {
+            match("BlackBoxBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:47:7: ( 'describedSignature' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:47:9: 'describedSignature'
+            {
+            match("describedSignature"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:48:7: ( 'describedEntity' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:48:9: 'describedEntity'
+            {
+            match("describedEntity"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:49:7: ( 'influencingParameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:49:9: 'influencingParameter'
+            {
+            match("influencingParameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:50:7: ( 'responseTimeSpecification' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:50:9: 'responseTimeSpecification'
+            {
+            match("responseTimeSpecification"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:51:7: ( 'RequiredRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:51:9: 'RequiredRole'
+            {
+            match("RequiredRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:52:7: ( 'CoarseGrainedBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:52:9: 'CoarseGrainedBehavior'
+            {
+            match("CoarseGrainedBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:53:7: ( 'externalCallFrequency' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:53:9: 'externalCallFrequency'
+            {
+            match("externalCallFrequency"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:54:7: ( 'resourceDemandSpecification' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:54:9: 'resourceDemandSpecification'
+            {
+            match("resourceDemandSpecification"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:55:7: ( 'BasicComponent' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:55:9: 'BasicComponent'
+            {
+            match("BasicComponent"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:56:7: ( 'passiveResources' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:56:9: 'passiveResources'
+            {
+            match("passiveResources"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:57:7: ( 'fineGrainedBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:57:9: 'fineGrainedBehavior'
+            {
+            match("fineGrainedBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:58:7: ( 'CompositeComponent' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:58:9: 'CompositeComponent'
+            {
+            match("CompositeComponent"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:59:7: ( 'assemblyContexts' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:59:9: 'assemblyContexts'
+            {
+            match("assemblyContexts"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:60:7: ( 'assemblyConnectors' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:60:9: 'assemblyConnectors'
+            {
+            match("assemblyConnectors"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:61:7: ( 'providedDelegationConnectors' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:61:9: 'providedDelegationConnectors'
+            {
+            match("providedDelegationConnectors"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:62:7: ( 'requiredDelegationConnectors' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:62:9: 'requiredDelegationConnectors'
+            {
+            match("requiredDelegationConnectors"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:63:7: ( 'SubSystem' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:63:9: 'SubSystem'
+            {
+            match("SubSystem"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:64:7: ( 'InfluencingParameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:64:9: 'InfluencingParameter'
+            {
+            match("InfluencingParameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:65:7: ( 'description' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:65:9: 'description'
+            {
+            match("description"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:66:7: ( 'behavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:66:9: 'behavior'
+            {
+            match("behavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:67:7: ( 'scope' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:67:9: 'scope'
+            {
+            match("scope"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:68:7: ( 'ResponseTimeSpecification' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:68:9: 'ResponseTimeSpecification'
+            {
+            match("ResponseTimeSpecification"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:69:7: ( 'Scope' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:69:9: 'Scope'
+            {
+            match("Scope"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:70:7: ( 'interfaceProvidingRequiringEntity' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:70:9: 'interfaceProvidingRequiringEntity'
+            {
+            match("interfaceProvidingRequiringEntity"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:71:7: ( 'ServiceInputParameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:71:9: 'ServiceInputParameter'
+            {
+            match("ServiceInputParameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:72:7: ( 'characterization' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:72:9: 'characterization'
+            {
+            match("characterization"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:73:7: ( 'signature' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:73:9: 'signature'
+            {
+            match("signature"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:74:7: ( 'parameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:74:9: 'parameter'
+            {
+            match("parameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:75:7: ( 'providedRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:75:9: 'providedRole'
+            {
+            match("providedRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:76:7: ( 'ExternalCallReturnParameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:76:9: 'ExternalCallReturnParameter'
+            {
+            match("ExternalCallReturnParameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:77:7: ( 'externalCall' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:77:9: 'externalCall'
+            {
+            match("externalCall"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:78:7: ( 'ExternalCallParameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:78:9: 'ExternalCallParameter'
+            {
+            match("ExternalCallParameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:79:7: ( 'externallCall' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:79:9: 'externallCall'
+            {
+            match("externallCall"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:80:7: ( 'FineGrainedBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:80:9: 'FineGrainedBehavior'
+            {
+            match("FineGrainedBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:81:7: ( 'basicComponent' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:81:9: 'basicComponent'
+            {
+            match("basicComponent"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:82:7: ( 'actions' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:82:9: 'actions'
+            {
+            match("actions"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:83:7: ( 'AbstractAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:83:9: 'AbstractAction'
+            {
+            match("AbstractAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:84:7: ( 'predecessor' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:84:9: 'predecessor'
+            {
+            match("predecessor"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:85:7: ( 'successor' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:85:9: 'successor'
+            {
+            match("successor"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:86:7: ( 'ComponentInternalBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:86:9: 'ComponentInternalBehavior'
+            {
+            match("ComponentInternalBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:87:7: ( 'StartAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:87:9: 'StartAction'
+            {
+            match("StartAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:88:7: ( 'StopAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:88:9: 'StopAction'
+            {
+            match("StopAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:89:7: ( 'AcquireAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:89:9: 'AcquireAction'
+            {
+            match("AcquireAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:90:7: ( 'passiveResource' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:90:9: 'passiveResource'
+            {
+            match("passiveResource"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:91:7: ( 'ReleaseAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:91:9: 'ReleaseAction'
+            {
+            match("ReleaseAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:92:7: ( 'InternalAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:92:9: 'InternalAction'
+            {
+            match("InternalAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:93:7: ( 'withSynchronizationBarrier' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:93:9: 'withSynchronizationBarrier'
+            {
+            match("withSynchronizationBarrier"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:94:7: ( 'ForkAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:94:9: 'ForkAction'
+            {
+            match("ForkAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:95:7: ( 'forkedBehaviors' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:95:9: 'forkedBehaviors'
+            {
+            match("forkedBehaviors"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:96:7: ( 'BranchAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:96:9: 'BranchAction'
+            {
+            match("BranchAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:97:7: ( 'branches' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:97:9: 'branches'
+            {
+            match("branches"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:98:7: ( 'branchProbabilities' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:98:9: 'branchProbabilities'
+            {
+            match("branchProbabilities"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:99:7: ( 'LoopAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:99:9: 'LoopAction'
+            {
+            match("LoopAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:100:8: ( 'loopBodyBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:100:10: 'loopBodyBehavior'
+            {
+            match("loopBodyBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:101:8: ( 'loopIterationCountDistribution' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:101:10: 'loopIterationCountDistribution'
+            {
+            match("loopIterationCountDistribution"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:102:8: ( 'ExternalCallAction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:102:10: 'ExternalCallAction'
+            {
+            match("ExternalCallAction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:103:8: ( 'requiredRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:103:10: 'requiredRole'
+            {
+            match("requiredRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:104:8: ( 'PassiveResourceSpecification' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:104:10: 'PassiveResourceSpecification'
+            {
+            match("PassiveResourceSpecification"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:105:8: ( 'passiveResourceType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:105:10: 'passiveResourceType'
+            {
+            match("passiveResourceType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:106:8: ( 'capacity' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:106:10: 'capacity'
+            {
+            match("capacity"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:107:8: ( 'PassiveResourceCapacity' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:107:10: 'PassiveResourceCapacity'
+            {
+            match("PassiveResourceCapacity"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:108:8: ( '-' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:108:10: '-'
+            {
+            match('-'); 
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:109:8: ( 'ResourceDemandSpecification' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:109:10: 'ResourceDemandSpecification'
+            {
+            match("ResourceDemandSpecification"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:110:8: ( 'processingResourceType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:110:10: 'processingResourceType'
+            {
+            match("processingResourceType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:111:8: ( 'ProcessingResourceType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:111:10: 'ProcessingResourceType'
+            {
+            match("ProcessingResourceType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:112:8: ( 'CommunicationLinkResourceType' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:112:10: 'CommunicationLinkResourceType'
+            {
+            match("CommunicationLinkResourceType"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:113:8: ( 'BranchTransition' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:113:10: 'BranchTransition'
+            {
+            match("BranchTransition"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:114:8: ( 'branchBehavior' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:114:10: 'branchBehavior'
+            {
+            match("branchBehavior"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:115:8: ( 'BranchProbabilities' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:115:10: 'BranchProbabilities'
+            {
+            match("BranchProbabilities"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:116:8: ( 'probabilities' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:116:10: 'probabilities'
+            {
+            match("probabilities"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:117:8: ( 'ProbabilityMassFunction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:117:10: 'ProbabilityMassFunction'
+            {
+            match("ProbabilityMassFunction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:118:8: ( 'sample' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:118:10: 'sample'
+            {
+            match("sample"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:119:8: ( 'ProbabilityDensityFunction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:119:10: 'ProbabilityDensityFunction'
+            {
+            match("ProbabilityDensityFunction"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:120:8: ( 'BoxedPDF' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:120:10: 'BoxedPDF'
+            {
+            match("BoxedPDF"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:121:8: ( 'ContinuousPDF' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:121:10: 'ContinuousPDF'
+            {
+            match("ContinuousPDF"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:122:8: ( 'NormalDistribution' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:122:10: 'NormalDistribution'
+            {
+            match("NormalDistribution"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:123:8: ( 'mu' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:123:10: 'mu'
+            {
+            match("mu"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:124:8: ( 'sigma' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:124:10: 'sigma'
+            {
+            match("sigma"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:125:8: ( 'ExponentialDistribution' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:125:10: 'ExponentialDistribution'
+            {
+            match("ExponentialDistribution"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:126:8: ( 'rate' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:126:10: 'rate'
+            {
+            match("rate"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:127:8: ( 'Sample' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:127:10: 'Sample'
+            {
+            match("Sample"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:128:8: ( 'probability' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:128:10: 'probability'
+            {
+            match("probability"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:129:8: ( 'value' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:129:10: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:130:8: ( '.' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:130:10: '.'
+            {
+            match('.'); 
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:131:8: ( 'ContinuousSample' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:131:10: 'ContinuousSample'
+            {
+            match("ContinuousSample"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:132:8: ( 'LoopIterationCountDistribution' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:132:10: 'LoopIterationCountDistribution'
+            {
+            match("LoopIterationCountDistribution"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:133:8: ( 'AssemblyContext' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:133:10: 'AssemblyContext'
+            {
+            match("AssemblyContext"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:134:8: ( 'encapsulatedComponent' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:134:10: 'encapsulatedComponent'
+            {
+            match("encapsulatedComponent"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:135:8: ( 'AssemblyConnector' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:135:10: 'AssemblyConnector'
+            {
+            match("AssemblyConnector"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:136:8: ( 'providingAssemblyContext' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:136:10: 'providingAssemblyContext'
+            {
+            match("providingAssemblyContext"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:137:8: ( 'requiringAssemblyContext' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:137:10: 'requiringAssemblyContext'
+            {
+            match("requiringAssemblyContext"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:138:8: ( 'ProvidedDelegationConnector' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:138:10: 'ProvidedDelegationConnector'
+            {
+            match("ProvidedDelegationConnector"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:139:8: ( 'assemblyContext' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:139:10: 'assemblyContext'
+            {
+            match("assemblyContext"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:140:8: ( 'innerProvidedRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:140:10: 'innerProvidedRole'
+            {
+            match("innerProvidedRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:141:8: ( 'outerProvidedRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:141:10: 'outerProvidedRole'
+            {
+            match("outerProvidedRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:142:8: ( 'RequiredDelegationConnector' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:142:10: 'RequiredDelegationConnector'
+            {
+            match("RequiredDelegationConnector"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:143:8: ( 'innerRequiredRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:143:10: 'innerRequiredRole'
+            {
+            match("innerRequiredRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:144:8: ( 'outerRequiredRole' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:144:10: 'outerRequiredRole'
+            {
+            match("outerRequiredRole"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:145:8: ( 'ExternalCall' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:145:10: 'ExternalCall'
+            {
+            match("ExternalCall"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:146:8: ( 'ExternalCallFrequency' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:146:10: 'ExternalCallFrequency'
+            {
+            match("ExternalCallFrequency"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:147:8: ( 'frequency' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:147:10: 'frequency'
+            {
+            match("frequency"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:148:8: ( 'CallFrequency' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:148:10: 'CallFrequency'
+            {
+            match("CallFrequency"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:149:8: ( 'DependencyRelationship' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:149:10: 'DependencyRelationship'
+            {
+            match("DependencyRelationship"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:150:8: ( 'surroundingEntity' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:150:10: 'surroundingEntity'
+            {
+            match("surroundingEntity"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:151:8: ( 'influencedVariable' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:151:10: 'influencedVariable'
+            {
+            match("influencedVariable"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:152:8: ( 'CorrelationRelationship' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:152:10: 'CorrelationRelationship'
+            {
+            match("CorrelationRelationship"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:153:8: ( 'leftInfluencingParameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:153:10: 'leftInfluencingParameter'
+            {
+            match("leftInfluencingParameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:154:8: ( 'rightInfluencingParameter' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:154:10: 'rightInfluencingParameter'
+            {
+            match("rightInfluencingParameter"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:155:8: ( 'leftComponentInstanceReference' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:155:10: 'leftComponentInstanceReference'
+            {
+            match("leftComponentInstanceReference"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:156:8: ( 'rightComponentInstanceReference' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:156:10: 'rightComponentInstanceReference'
+            {
+            match("rightComponentInstanceReference"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:157:8: ( 'ComponentInstanceReference' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:157:10: 'ComponentInstanceReference'
+            {
+            match("ComponentInstanceReference"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:158:8: ( 'assemblies' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:158:10: 'assemblies'
+            {
+            match("assemblies"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:159:8: ( 'INT' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:159:10: 'INT'
+            {
+            match("INT"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:160:8: ( 'STRING' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:160:10: 'STRING'
+            {
+            match("STRING"); 
+
+
+            }
+
+            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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:161:8: ( 'BOOL' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:161:10: 'BOOL'
+            {
+            match("BOOL"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__161"
+
+    // $ANTLR start "T__162"
+    public final void mT__162() throws RecognitionException {
+        try {
+            int _type = T__162;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:162:8: ( 'DOUBLE' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:162:10: 'DOUBLE'
+            {
+            match("DOUBLE"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__162"
+
+    // $ANTLR start "T__163"
+    public final void mT__163() throws RecognitionException {
+        try {
+            int _type = T__163;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:163:8: ( 'CHAR' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:163:10: 'CHAR'
+            {
+            match("CHAR"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__163"
+
+    // $ANTLR start "T__164"
+    public final void mT__164() throws RecognitionException {
+        try {
+            int _type = T__164;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:164:8: ( 'BYTE' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:164:10: 'BYTE'
+            {
+            match("BYTE"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__164"
+
+    // $ANTLR start "T__165"
+    public final void mT__165() throws RecognitionException {
+        try {
+            int _type = T__165;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:165:8: ( 'LONG' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:165:10: 'LONG'
+            {
+            match("LONG"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__165"
+
+    // $ANTLR start "T__166"
+    public final void mT__166() throws RecognitionException {
+        try {
+            int _type = T__166;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:166:8: ( 'NONE' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:166:10: 'NONE'
+            {
+            match("NONE"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__166"
+
+    // $ANTLR start "T__167"
+    public final void mT__167() throws RecognitionException {
+        try {
+            int _type = T__167;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:167:8: ( 'IN' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:167:10: 'IN'
+            {
+            match("IN"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__167"
+
+    // $ANTLR start "T__168"
+    public final void mT__168() throws RecognitionException {
+        try {
+            int _type = T__168;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:168:8: ( 'OUT' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:168:10: 'OUT'
+            {
+            match("OUT"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__168"
+
+    // $ANTLR start "T__169"
+    public final void mT__169() throws RecognitionException {
+        try {
+            int _type = T__169;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:169:8: ( 'INOUT' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:169:10: 'INOUT'
+            {
+            match("INOUT"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__169"
+
+    // $ANTLR start "T__170"
+    public final void mT__170() throws RecognitionException {
+        try {
+            int _type = T__170;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:170:8: ( 'VALUE' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:170:10: 'VALUE'
+            {
+            match("VALUE"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__170"
+
+    // $ANTLR start "T__171"
+    public final void mT__171() throws RecognitionException {
+        try {
+            int _type = T__171;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:171:8: ( 'NUMBER_OF_ELEMENTS' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:171:10: 'NUMBER_OF_ELEMENTS'
+            {
+            match("NUMBER_OF_ELEMENTS"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__171"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8530:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8530:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8530:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8530: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;}
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8530: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 :
+            	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8532:10: ( ( '0' .. '9' )+ )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8532:12: ( '0' .. '9' )+
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8532: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 :
+            	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8532: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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            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 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+                    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 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:66: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    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 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    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 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    {
+                    	    match('\\'); 
+                    	    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||(input.LA(1)>='t' && input.LA(1)<='u') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8534:137: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8536:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8536:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8536: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 :
+            	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8536: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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538: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 :
+            	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538: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);
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538: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 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538:41: ( '\\r' )? '\\n'
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8538: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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8540:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8540:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8540: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 :
+            	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.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;
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8542:16: ( . )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8542:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.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 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=168;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:70: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 12 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:76: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 13 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:82: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 14 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:88: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 15 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:94: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 16 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:100: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 17 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:106: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 18 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:112: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 19 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:118: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 20 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:124: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 21 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:130: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 22 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:136: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 23 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:142: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 24 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:148: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 25 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:154: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 26 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:160: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 27 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:166: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 28 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:172: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 29 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:178: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 30 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:184: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 31 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:190: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 32 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:196: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 33 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:202: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 34 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:208: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 35 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:214: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 36 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:220: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 37 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:226: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 38 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:232: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 39 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:238: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 40 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:244: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 41 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:250: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 42 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:256: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 43 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:262: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 44 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:268: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 45 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:274: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 46 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:280: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 47 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:286: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 48 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:292: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 49 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:298: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 50 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:304: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 51 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:310: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 52 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:316: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 53 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:322: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 54 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:328: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 55 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:334: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 56 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:340: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 57 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:346: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 58 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:352: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 59 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:358: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 60 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:364: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 61 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:370: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 62 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:376: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 63 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:382: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 64 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:388: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 65 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:394: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 66 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:400: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 67 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:406: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 68 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:412: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 69 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:418: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 70 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:424: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 71 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:430: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 72 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:436: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 73 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:442: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 74 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:448: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 75 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:454: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 76 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:460: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 77 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:466: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 78 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:472: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 79 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:478: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 80 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:484: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 81 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:490: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 82 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:496: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 83 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:502: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 84 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:508: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 85 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:514: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 86 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:520: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 87 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:526: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 88 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:532: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 89 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:538: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 90 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:544: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 91 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:551: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 92 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:558: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 93 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:565: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 94 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:572: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 95 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:579: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 96 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:586: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 97 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:593: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 98 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:600: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 99 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:607: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 100 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:614: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 101 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:621: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 102 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:628: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 103 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:635: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 104 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:642: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 105 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:649: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 106 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:656: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 107 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:663: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 108 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:670: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 109 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:677: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 110 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:684: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 111 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:691: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 112 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:698: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 113 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:705: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 114 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:712: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 115 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:719: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 116 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:726: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 117 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:733: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 118 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:740: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 119 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:747: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 120 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:754: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 121 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:761: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 122 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:768: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 123 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:775: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 124 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:782: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 125 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:789: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 126 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:796: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 127 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:803: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 128 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:810: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 129 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:817: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 130 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:824: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 131 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:831: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 132 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:838: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 133 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:845: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 134 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:852: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 135 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:859: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 136 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:866: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 137 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:873: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 138 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:880: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 139 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:887: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 140 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:894: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 141 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:901: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 142 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:908: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 143 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:915: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 144 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:922: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 145 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:929: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 146 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:936: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 147 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:943: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 148 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:950: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 149 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:957: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 150 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:964: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 151 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:971: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 152 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:978: T__162
+                {
+                mT__162(); 
+
+                }
+                break;
+            case 153 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:985: T__163
+                {
+                mT__163(); 
+
+                }
+                break;
+            case 154 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:992: T__164
+                {
+                mT__164(); 
+
+                }
+                break;
+            case 155 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:999: T__165
+                {
+                mT__165(); 
+
+                }
+                break;
+            case 156 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1006: T__166
+                {
+                mT__166(); 
+
+                }
+                break;
+            case 157 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1013: T__167
+                {
+                mT__167(); 
+
+                }
+                break;
+            case 158 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1020: T__168
+                {
+                mT__168(); 
+
+                }
+                break;
+            case 159 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1027: T__169
+                {
+                mT__169(); 
+
+                }
+                break;
+            case 160 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1034: T__170
+                {
+                mT__170(); 
+
+                }
+                break;
+            case 161 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1041: T__171
+                {
+                mT__171(); 
+
+                }
+                break;
+            case 162 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1048: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 163 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1056: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 164 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1065: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 165 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1077: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 166 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1093: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 167 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1109: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 168 :
+                // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1:1117: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\1\uffff\1\60\1\uffff\2\60\2\uffff\4\60\2\uffff\22\60\1\uffff\2"+
+        "\60\1\uffff\4\60\1\56\2\uffff\3\56\2\uffff\1\60\2\uffff\3\60\2\uffff"+
+        "\5\60\1\u0096\2\60\2\uffff\31\60\1\u00bf\30\60\1\uffff\4\60\1\uffff"+
+        "\5\60\5\uffff\21\60\1\u00f4\1\60\1\uffff\50\60\1\uffff\40\60\1\u0146"+
+        "\6\60\1\u014d\14\60\1\uffff\23\60\1\u016e\14\60\1\u017b\6\60\1\u0182"+
+        "\15\60\1\u0190\1\u0191\20\60\1\u01a3\3\60\1\u01a9\5\60\1\uffff\6"+
+        "\60\1\uffff\15\60\1\u01c6\10\60\1\u01cf\1\u01d0\10\60\1\uffff\14"+
+        "\60\1\uffff\6\60\1\uffff\2\60\1\u01ef\12\60\2\uffff\21\60\1\uffff"+
+        "\5\60\1\uffff\1\60\1\u0211\3\60\1\u0216\26\60\1\uffff\10\60\2\uffff"+
+        "\2\60\1\u023a\33\60\1\uffff\3\60\1\u025c\1\u025d\34\60\1\uffff\3"+
+        "\60\1\u027f\1\uffff\43\60\1\uffff\41\60\2\uffff\15\60\1\u02d2\23"+
+        "\60\1\uffff\6\60\1\u02ed\13\60\1\u02fa\31\60\1\u0316\1\60\1\u0318"+
+        "\25\60\1\u032f\5\60\1\u0335\7\60\1\uffff\31\60\1\u0357\1\uffff\2"+
+        "\60\1\u035d\1\u035e\10\60\1\uffff\1\u0367\5\60\1\u036e\7\60\1\u0377"+
+        "\1\u0378\13\60\1\uffff\1\60\1\uffff\17\60\1\u0395\1\60\1\u0397\1"+
+        "\u0398\3\60\1\uffff\5\60\1\uffff\5\60\1\u03a6\25\60\1\u03bd\5\60"+
+        "\1\uffff\3\60\1\u03c6\1\60\2\uffff\5\60\1\u03cd\2\60\1\uffff\5\60"+
+        "\1\u03d5\1\uffff\7\60\1\u03de\2\uffff\5\60\1\u03e4\26\60\1\uffff"+
+        "\1\60\2\uffff\2\60\1\u03ff\12\60\1\uffff\1\60\1\u040b\3\60\1\u040f"+
+        "\4\60\1\u0414\13\60\1\uffff\7\60\1\u0427\1\uffff\6\60\1\uffff\6"+
+        "\60\1\u0434\1\uffff\6\60\1\u043b\1\u043c\1\uffff\5\60\1\uffff\31"+
+        "\60\1\u045d\1\uffff\13\60\1\uffff\3\60\1\uffff\4\60\1\uffff\13\60"+
+        "\1\u047d\6\60\1\uffff\14\60\1\uffff\1\60\1\u0492\4\60\2\uffff\1"+
+        "\60\1\u0498\1\u049a\26\60\1\u04b1\6\60\1\uffff\2\60\1\u04ba\2\60"+
+        "\1\u04be\6\60\1\u04c9\22\60\1\uffff\3\60\1\u04df\17\60\1\u04ef\1"+
+        "\uffff\3\60\1\u04f3\1\60\1\uffff\1\u04f5\1\uffff\21\60\1\u0507\2"+
+        "\60\1\u050a\1\60\1\uffff\10\60\1\uffff\3\60\1\uffff\1\u0517\11\60"+
+        "\1\uffff\3\60\1\u0524\21\60\1\uffff\12\60\1\u0540\4\60\1\uffff\3"+
+        "\60\1\uffff\1\60\1\uffff\7\60\1\u0550\1\60\1\u0552\7\60\1\uffff"+
+        "\2\60\1\uffff\10\60\1\u0564\3\60\1\uffff\13\60\1\u0573\1\uffff\22"+
+        "\60\1\u0586\10\60\1\uffff\3\60\1\u0594\13\60\1\uffff\1\60\1\uffff"+
+        "\21\60\1\uffff\5\60\1\u05b8\1\u05ba\7\60\1\uffff\1\u05c2\21\60\1"+
+        "\uffff\7\60\1\u05db\1\u05dc\1\60\1\u05de\1\u05df\1\60\1\uffff\12"+
+        "\60\1\u05eb\10\60\1\u05f4\11\60\1\u05fe\1\u05ff\4\60\1\uffff\1\u0604"+
+        "\1\uffff\7\60\1\uffff\3\60\1\u060f\16\60\1\u061e\1\u061f\1\u0620"+
+        "\3\60\2\uffff\1\60\2\uffff\4\60\1\u0629\6\60\1\uffff\2\60\1\u0632"+
+        "\5\60\1\uffff\1\60\1\u0639\7\60\2\uffff\4\60\1\uffff\7\60\1\u064c"+
+        "\2\60\1\uffff\5\60\1\u0654\1\u0655\5\60\1\u065b\1\60\3\uffff\1\60"+
+        "\1\u065e\6\60\1\uffff\7\60\1\u066c\1\uffff\1\u066d\5\60\1\uffff"+
+        "\13\60\1\u067e\2\60\1\u0681\3\60\1\uffff\5\60\1\u068a\1\u068b\2"+
+        "\uffff\1\60\1\u068d\3\60\1\uffff\2\60\1\uffff\2\60\1\u0695\11\60"+
+        "\1\u069f\2\uffff\14\60\1\u06ac\2\60\1\u06af\1\uffff\2\60\1\uffff"+
+        "\2\60\1\u06b4\5\60\2\uffff\1\60\1\uffff\4\60\1\u06bf\1\60\1\u06c1"+
+        "\1\uffff\11\60\1\uffff\14\60\1\uffff\2\60\1\uffff\4\60\1\uffff\12"+
+        "\60\1\uffff\1\u06e7\1\uffff\14\60\1\u06f4\7\60\1\u06fc\1\u06fd\1"+
+        "\u06fe\1\60\1\u0700\1\u0701\13\60\1\uffff\2\60\1\u070f\11\60\1\uffff"+
+        "\2\60\1\u071b\4\60\3\uffff\1\60\2\uffff\6\60\1\u0727\6\60\1\uffff"+
+        "\11\60\1\u0737\1\60\1\uffff\1\u0739\2\60\1\u073c\1\60\1\u073e\5"+
+        "\60\1\uffff\5\60\1\u0749\1\60\1\u074b\7\60\1\uffff\1\60\1\uffff"+
+        "\2\60\1\uffff\1\60\1\uffff\3\60\1\u075a\2\60\1\u075d\3\60\1\uffff"+
+        "\1\60\1\uffff\1\u0762\1\60\1\u0764\1\60\1\u0766\11\60\1\uffff\2"+
+        "\60\1\uffff\4\60\1\uffff\1\60\1\uffff\1\60\1\uffff\1\u0778\2\60"+
+        "\1\u077b\2\60\1\u077e\3\60\1\u0782\1\u0783\3\60\1\u0787\1\60\1\uffff"+
+        "\1\60\1\u078a\1\uffff\1\60\1\u078c\1\uffff\3\60\2\uffff\1\60\1\u0791"+
+        "\1\u0792\1\uffff\2\60\1\uffff\1\u0795\1\uffff\4\60\2\uffff\1\60"+
+        "\1\u079b\1\uffff\5\60\1\uffff\1\u07a1\1\u07a2\1\u07a3\1\60\1\u07a5"+
+        "\3\uffff\1\60\1\uffff\1\u07a7\1\uffff";
+    static final String DFA12_eofS =
+        "\u07a8\uffff";
+    static final String DFA12_minS =
+        "\1\0\1\145\1\uffff\2\141\2\uffff\1\156\1\141\1\116\1\141\2\uffff"+
+        "\3\141\1\110\1\141\1\171\1\124\1\157\1\117\1\156\1\151\1\143\1\170"+
+        "\1\151\1\142\1\151\1\117\1\145\1\uffff\1\117\1\141\1\uffff\1\165"+
+        "\1\117\1\125\2\101\2\uffff\2\0\1\52\2\uffff\1\154\2\uffff\1\155"+
+        "\1\164\1\163\2\uffff\1\146\2\141\1\160\1\146\1\60\1\162\1\145\2"+
+        "\uffff\1\147\1\157\1\143\1\155\1\154\1\164\1\147\1\141\1\150\1\163"+
+        "\2\141\1\154\1\101\1\151\1\162\1\160\1\147\1\142\1\157\1\162\1\141"+
+        "\1\155\1\122\1\144\1\60\1\141\1\163\1\141\1\170\1\117\1\124\1\164"+
+        "\1\143\1\156\1\162\1\145\1\163\1\164\1\160\1\156\1\162\1\163\1\161"+
+        "\1\163\1\164\1\157\1\116\1\157\1\146\1\uffff\1\162\1\116\1\115\1"+
+        "\154\1\uffff\1\164\1\160\1\125\1\124\1\114\5\uffff\1\157\1\165\1"+
+        "\157\2\145\1\141\1\143\2\145\1\154\1\160\2\162\1\141\2\145\1\154"+
+        "\1\60\1\125\1\uffff\1\141\1\163\1\142\1\144\1\155\1\160\1\143\1"+
+        "\162\1\160\1\141\2\165\1\157\1\145\1\150\1\143\1\141\1\151\1\156"+
+        "\1\154\1\155\1\162\1\164\1\162\1\154\1\122\1\155\1\142\1\141\1\163"+
+        "\1\145\1\156\1\123\1\160\1\166\1\162\2\160\1\111\1\151\1\uffff\1"+
+        "\143\1\151\1\156\1\145\1\114\1\105\1\145\1\141\1\145\1\153\1\161"+
+        "\1\145\1\151\1\145\1\157\1\145\1\153\1\164\1\165\1\145\1\150\1\160"+
+        "\1\107\1\160\1\164\1\155\1\105\1\102\1\165\2\145\1\102\1\60\1\125"+
+        "\1\163\1\151\1\157\1\165\1\141\1\60\1\124\3\162\1\165\1\157\1\163"+
+        "\1\141\1\143\2\162\1\165\1\uffff\1\124\1\156\1\155\2\151\1\145\1"+
+        "\141\1\145\2\141\2\145\1\157\1\154\1\164\1\151\1\162\1\157\1\165"+
+        "\1\60\1\164\1\153\1\166\2\143\1\145\1\157\1\165\1\163\1\151\1\145"+
+        "\1\106\1\60\2\151\1\145\1\141\1\155\1\151\1\60\1\141\1\171\1\145"+
+        "\1\151\1\164\1\101\1\154\1\116\1\146\1\153\2\143\1\144\2\60\1\162"+
+        "\1\160\1\107\1\145\1\165\1\155\1\157\1\162\1\156\1\107\1\101\1\162"+
+        "\1\151\1\155\1\123\1\101\1\60\1\102\1\103\1\141\1\60\1\105\1\145"+
+        "\1\162\1\156\1\114\1\uffff\1\105\1\151\1\162\1\156\1\162\1\163\1"+
+        "\uffff\2\171\1\151\1\146\1\104\1\145\1\156\1\145\1\143\1\151\1\146"+
+        "\1\104\1\145\1\60\1\164\1\145\1\166\1\144\1\163\1\142\1\143\1\164"+
+        "\2\60\1\163\1\165\1\145\1\151\1\162\2\156\1\162\1\uffff\1\103\1"+
+        "\102\1\151\1\103\1\150\1\143\2\156\1\145\1\156\1\154\1\162\1\uffff"+
+        "\1\164\1\144\1\163\1\142\1\145\1\166\1\uffff\1\164\1\163\1\60\1"+
+        "\143\1\101\1\143\1\145\1\107\1\151\1\102\1\103\1\150\1\120\2\uffff"+
+        "\1\156\1\163\1\162\1\144\1\145\1\142\2\156\1\145\1\162\1\143\1\141"+
+        "\1\162\1\142\1\171\1\143\1\164\1\uffff\1\157\1\164\1\156\1\157\1"+
+        "\154\1\uffff\1\122\1\60\1\120\1\144\1\105\1\60\1\164\1\145\1\163"+
+        "\1\143\1\145\2\160\1\142\1\141\1\171\1\145\1\162\1\145\1\156\1\145"+
+        "\1\107\2\164\2\141\1\145\1\156\1\uffff\1\111\1\164\2\145\1\163\1"+
+        "\151\1\145\1\165\2\uffff\1\163\1\156\1\60\1\157\1\145\1\124\1\163"+
+        "\1\143\1\156\4\157\1\102\1\164\1\151\1\145\1\151\1\107\1\165\1\141"+
+        "\1\145\1\151\1\145\1\163\1\151\1\164\1\145\1\165\1\164\1\uffff\1"+
+        "\145\1\143\1\164\2\60\1\145\2\157\1\101\1\104\1\141\1\165\1\141"+
+        "\1\102\1\156\1\154\1\163\1\141\1\156\1\141\1\164\1\143\1\145\1\154"+
+        "\1\156\1\164\1\145\1\144\1\145\1\146\1\155\1\104\1\137\1\uffff\1"+
+        "\162\2\145\1\60\1\uffff\1\157\1\144\2\145\1\101\3\145\1\164\1\143"+
+        "\1\160\1\143\1\157\1\161\1\143\1\156\1\162\1\145\1\171\1\143\1\154"+
+        "\2\143\1\156\1\171\1\145\1\122\1\144\1\156\1\151\1\154\1\163\1\162"+
+        "\1\157\1\144\1\uffff\1\156\1\144\1\156\1\171\2\145\1\146\1\155\1"+
+        "\170\1\162\1\155\1\163\1\162\1\145\1\151\1\164\1\156\1\143\1\162"+
+        "\1\157\1\164\1\161\1\166\1\144\1\151\1\154\1\145\1\122\1\162\1\145"+
+        "\1\111\1\164\1\151\2\uffff\1\162\1\170\1\155\1\143\2\162\1\106\2"+
+        "\154\1\151\1\145\1\143\1\151\1\60\1\154\1\164\2\151\1\164\1\101"+
+        "\1\171\1\143\1\151\1\162\1\171\1\162\1\154\1\160\1\151\1\117\1\157"+
+        "\1\161\1\156\1\uffff\1\162\1\104\1\124\1\104\1\143\1\163\1\60\1"+
+        "\144\1\151\2\145\1\154\1\166\1\165\1\145\1\164\1\141\1\162\1\60"+
+        "\1\145\1\101\1\154\1\151\1\164\1\160\1\162\1\145\1\104\1\147\1\156"+
+        "\1\151\1\163\1\145\1\162\1\151\1\163\1\104\1\147\1\160\1\124\1\104"+
+        "\1\154\1\160\1\102\1\60\1\160\1\60\1\157\1\150\1\157\1\145\1\164"+
+        "\2\141\1\165\1\151\1\165\1\145\1\104\1\156\1\151\1\162\2\145\1\155"+
+        "\1\156\1\151\1\157\1\60\1\102\1\160\1\164\1\141\1\157\1\60\1\103"+
+        "\1\141\1\156\1\150\1\171\1\103\1\145\1\uffff\1\103\1\151\1\156\1"+
+        "\157\1\101\1\143\1\103\1\150\1\157\1\141\1\102\1\141\1\165\1\157"+
+        "\1\163\1\106\1\166\1\165\1\143\1\171\1\157\1\145\1\151\1\145\1\164"+
+        "\1\60\1\uffff\1\105\1\157\2\60\1\141\2\151\1\156\1\144\1\163\2\151"+
+        "\1\uffff\1\60\1\143\1\141\1\156\2\145\1\60\1\163\1\157\1\145\1\101"+
+        "\1\147\1\164\1\157\2\60\1\156\1\150\1\157\1\145\1\101\1\145\1\151"+
+        "\1\145\1\165\1\157\1\145\1\uffff\1\157\1\uffff\1\142\1\141\1\156"+
+        "\1\103\1\111\1\164\1\151\1\163\1\157\1\145\1\104\1\157\1\145\1\147"+
+        "\1\164\1\60\1\163\2\60\1\160\1\157\1\156\1\uffff\1\145\1\157\1\151"+
+        "\1\156\1\142\1\uffff\1\141\1\103\1\164\1\145\1\141\1\60\1\157\1"+
+        "\163\2\141\1\145\1\156\1\143\1\164\1\157\1\162\1\156\1\164\1\145"+
+        "\1\164\1\145\1\156\1\164\1\137\2\151\1\171\1\60\2\154\2\155\1\151"+
+        "\1\uffff\1\151\2\156\1\60\1\162\2\uffff\1\162\1\144\1\162\1\147"+
+        "\1\126\1\60\1\156\1\172\1\uffff\1\164\1\162\1\147\1\162\1\163\1"+
+        "\60\1\uffff\1\157\2\154\1\163\1\122\1\151\1\162\1\60\2\uffff\1\147"+
+        "\1\151\2\154\1\163\1\60\2\155\1\145\1\156\1\150\1\156\1\141\1\166"+
+        "\1\104\1\141\1\157\1\156\1\151\1\156\1\120\2\156\1\141\2\154\1\122"+
+        "\1\171\1\uffff\1\157\2\uffff\1\165\1\156\1\60\1\150\1\156\1\157"+
+        "\1\163\1\141\1\154\1\141\1\145\1\144\1\166\1\uffff\1\156\1\60\2"+
+        "\154\1\144\1\60\1\164\1\151\1\156\1\157\1\60\1\151\1\150\1\151\1"+
+        "\156\1\145\1\162\1\105\1\144\1\162\1\122\1\157\1\uffff\3\145\1\141"+
+        "\1\157\1\147\1\164\1\60\1\uffff\1\157\1\141\2\145\1\120\1\141\1"+
+        "\uffff\1\145\1\141\1\151\1\141\1\120\1\146\1\60\1\uffff\1\165\2"+
+        "\145\1\163\2\145\2\60\1\uffff\1\105\1\160\2\145\1\163\1\uffff\1"+
+        "\145\1\141\1\156\1\145\1\141\1\145\1\142\1\151\1\141\1\164\1\155"+
+        "\1\163\1\157\1\145\1\104\1\141\1\122\1\143\1\164\3\145\1\104\1\165"+
+        "\1\164\1\60\1\uffff\1\141\1\145\1\156\1\151\1\142\2\154\1\144\1"+
+        "\102\1\151\1\156\1\uffff\1\154\1\104\1\102\1\uffff\1\151\1\157\2"+
+        "\156\1\uffff\1\157\1\141\1\157\1\143\1\156\1\151\1\114\3\145\1\155"+
+        "\1\60\1\147\1\123\3\156\1\151\1\uffff\1\166\1\164\2\144\1\141\1"+
+        "\162\1\144\1\164\1\157\1\164\2\141\1\uffff\1\162\1\60\1\147\1\145"+
+        "\2\163\2\uffff\1\156\2\60\1\147\1\145\1\123\1\156\1\143\1\156\1"+
+        "\166\1\156\1\151\1\157\1\164\1\141\1\160\1\145\1\164\1\156\1\144"+
+        "\1\106\1\155\1\145\1\171\1\141\1\60\1\147\1\163\1\141\1\145\1\162"+
+        "\1\120\1\uffff\1\166\1\156\1\60\1\164\1\151\1\60\1\154\1\103\1\145"+
+        "\1\157\2\145\1\60\1\151\1\145\1\157\1\156\2\145\1\151\1\156\1\166"+
+        "\1\156\1\151\1\164\1\142\1\105\2\144\1\154\1\160\1\uffff\1\141\1"+
+        "\160\1\144\1\60\1\141\1\164\2\151\2\122\1\162\1\151\1\102\1\151"+
+        "\1\156\1\151\1\162\2\143\1\60\1\uffff\1\141\1\155\1\157\1\60\1\164"+
+        "\1\uffff\1\60\1\uffff\1\141\1\155\1\160\1\144\1\151\1\164\1\151"+
+        "\1\164\1\154\1\162\1\141\1\124\1\157\1\162\1\141\1\114\1\102\1\60"+
+        "\1\160\1\154\1\60\1\124\1\uffff\1\141\1\157\1\163\1\156\1\143\1"+
+        "\141\1\151\1\164\1\uffff\1\151\1\154\1\162\1\uffff\1\60\1\157\1"+
+        "\150\1\162\1\170\1\143\1\145\1\141\1\143\1\162\1\uffff\1\163\1\150"+
+        "\1\156\1\60\1\170\1\143\1\172\1\103\1\151\1\103\1\156\1\111\1\165"+
+        "\1\115\2\122\1\141\1\157\1\164\1\145\1\123\1\uffff\1\164\1\171\1"+
+        "\144\3\157\2\141\1\145\1\157\1\60\1\157\1\141\2\145\1\uffff\1\164"+
+        "\1\142\1\165\1\uffff\1\151\1\uffff\1\164\1\142\1\145\1\123\1\156"+
+        "\1\111\1\157\1\60\1\151\1\60\1\124\1\171\3\156\1\151\1\145\1\uffff"+
+        "\1\154\1\141\1\uffff\1\171\1\164\1\165\2\163\1\145\1\162\1\157\1"+
+        "\60\1\157\1\151\1\145\1\uffff\1\155\1\141\1\163\3\164\1\162\1\164"+
+        "\1\145\1\164\1\141\1\60\1\uffff\2\164\1\141\3\157\1\147\1\156\1"+
+        "\164\1\105\2\157\1\164\1\156\1\151\1\143\1\160\1\165\1\60\1\151"+
+        "\1\156\2\154\1\155\1\142\1\150\1\156\1\uffff\1\156\1\155\1\163\1"+
+        "\60\1\151\1\154\1\162\1\164\1\151\1\154\1\143\1\160\1\147\1\156"+
+        "\1\162\1\uffff\1\164\1\uffff\1\171\1\160\1\145\1\141\1\143\1\156"+
+        "\1\150\1\145\1\164\1\160\1\151\1\162\1\106\1\151\1\103\1\141\1\162"+
+        "\1\uffff\1\156\1\164\1\161\1\160\1\166\2\60\1\157\1\165\1\141\1"+
+        "\151\1\161\1\162\1\166\1\uffff\1\60\1\157\1\164\1\165\1\162\1\165"+
+        "\1\120\1\163\1\151\1\116\2\154\1\151\1\145\1\157\1\151\1\145\1\162"+
+        "\1\uffff\1\156\1\163\3\145\1\154\1\141\2\60\1\145\2\60\1\171\1\uffff"+
+        "\1\157\1\171\1\143\1\171\1\157\1\171\1\151\1\145\1\120\1\163\1\60"+
+        "\1\151\1\160\1\145\1\156\1\154\1\145\1\153\1\141\1\60\1\151\1\145"+
+        "\1\157\1\143\1\165\1\164\1\160\1\141\1\155\2\60\1\151\1\165\1\157"+
+        "\1\151\1\uffff\1\60\1\uffff\2\162\1\155\1\157\1\165\2\151\1\uffff"+
+        "\1\162\1\151\1\156\1\60\1\156\1\141\1\164\1\157\1\124\2\145\1\157"+
+        "\2\156\1\146\1\143\1\145\1\147\3\60\1\164\1\145\1\166\2\uffff\1"+
+        "\164\2\uffff\1\160\1\156\1\103\1\145\1\60\1\156\1\103\1\146\1\143"+
+        "\1\141\1\164\1\uffff\2\145\1\60\1\164\1\102\2\122\1\166\1\uffff"+
+        "\1\157\1\60\1\156\1\145\1\156\1\171\1\145\1\160\1\145\2\uffff\2"+
+        "\145\1\156\1\157\1\uffff\1\163\1\156\1\145\1\156\1\145\1\142\1\157"+
+        "\1\60\1\157\1\164\1\uffff\1\164\1\162\1\141\1\156\1\123\2\60\1\156"+
+        "\1\164\1\103\2\151\1\60\1\122\3\uffff\1\145\1\60\1\151\2\145\1\103"+
+        "\1\157\1\124\1\uffff\1\103\1\157\2\151\1\162\1\141\1\163\1\60\1"+
+        "\uffff\1\60\3\145\1\151\1\156\1\uffff\1\103\1\124\1\143\1\106\1"+
+        "\143\1\141\1\164\1\163\1\156\1\145\1\162\1\60\1\120\1\164\1\60\1"+
+        "\156\1\165\1\162\1\uffff\1\156\2\104\1\141\1\156\2\60\2\uffff\1"+
+        "\163\1\60\1\157\1\143\1\146\1\uffff\1\145\1\162\1\uffff\1\157\1"+
+        "\162\1\60\1\157\1\156\1\171\1\157\1\156\1\143\1\146\1\141\1\156"+
+        "\1\60\2\uffff\1\150\1\146\1\163\1\157\1\163\1\157\1\171\1\164\1"+
+        "\165\1\151\1\143\1\145\1\60\1\143\1\156\1\60\1\uffff\1\141\1\145"+
+        "\1\uffff\1\143\1\164\1\60\1\102\2\151\1\155\1\143\2\uffff\1\150"+
+        "\1\uffff\1\156\1\141\1\151\1\161\1\60\1\162\1\60\1\uffff\1\156\1"+
+        "\164\1\160\1\156\1\164\1\141\1\151\1\155\1\143\1\uffff\1\141\1\145"+
+        "\1\157\1\162\1\150\1\156\1\160\1\151\1\156\1\146\1\151\1\162\1\uffff"+
+        "\1\171\1\164\1\uffff\2\162\1\171\1\151\1\uffff\1\141\2\163\2\145"+
+        "\1\151\1\156\1\164\1\143\1\165\1\uffff\1\60\1\uffff\1\156\2\145"+
+        "\1\156\1\145\1\164\1\143\2\145\1\166\1\162\1\165\1\60\1\151\1\156"+
+        "\1\145\1\157\1\143\1\151\1\164\3\60\1\141\2\60\1\157\1\162\3\164"+
+        "\1\122\1\160\1\145\1\151\1\141\1\151\1\uffff\1\145\1\170\1\60\1"+
+        "\145\1\170\1\151\1\141\1\164\1\122\1\151\1\145\1\162\1\uffff\1\160"+
+        "\1\145\1\60\1\156\1\164\1\143\1\171\3\uffff\1\155\2\uffff\1\156"+
+        "\3\162\2\145\1\60\1\143\1\157\1\164\1\162\1\143\1\164\1\uffff\1"+
+        "\143\1\164\1\157\1\164\2\145\1\157\1\156\1\143\1\60\1\143\1\uffff"+
+        "\1\60\1\151\1\141\1\60\1\145\1\60\3\151\1\162\1\146\1\uffff\1\164"+
+        "\1\156\2\151\1\164\1\60\1\164\1\60\1\156\1\151\1\162\1\146\1\162"+
+        "\1\143\1\145\1\uffff\1\164\1\uffff\1\157\1\164\1\uffff\1\164\1\uffff"+
+        "\1\145\2\142\1\60\1\145\1\157\1\60\1\157\1\156\1\157\1\uffff\1\157"+
+        "\1\uffff\1\60\1\157\1\60\1\145\1\60\1\145\1\124\1\157\1\156\1\151"+
+        "\1\145\1\162\2\165\1\uffff\2\162\1\uffff\1\156\1\147\2\162\1\uffff"+
+        "\1\156\1\uffff\1\162\1\uffff\1\60\1\171\1\162\1\60\1\157\1\162\1"+
+        "\60\2\164\1\145\2\60\1\105\2\163\1\60\1\145\1\uffff\1\160\1\60\1"+
+        "\uffff\1\156\1\60\1\uffff\2\151\1\156\2\uffff\1\156\2\60\1\uffff"+
+        "\1\156\1\145\1\uffff\1\60\1\uffff\2\157\1\143\1\164\2\uffff\1\143"+
+        "\1\60\1\uffff\2\156\1\145\1\151\1\145\1\uffff\3\60\1\164\1\60\3"+
+        "\uffff\1\171\1\uffff\1\60\1\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\1\145\1\uffff\1\141\1\145\2\uffff\1\156\1\157\1\156\1\162"+
+        "\2\uffff\1\165\1\151\1\162\1\157\1\162\1\171\2\165\1\162\1\170\1"+
+        "\162\1\163\1\170\1\157\1\163\1\151\2\157\1\uffff\1\157\1\141\1\uffff"+
+        "\1\165\1\145\1\125\1\101\1\172\2\uffff\2\uffff\1\57\2\uffff\1\163"+
+        "\2\uffff\1\155\1\164\1\163\2\uffff\1\164\1\155\1\141\1\160\1\164"+
+        "\1\172\1\163\1\157\2\uffff\1\147\1\157\1\162\1\155\2\164\1\147\1"+
+        "\141\1\150\1\163\1\141\1\162\1\154\1\101\1\157\1\163\1\160\1\147"+
+        "\1\142\1\157\1\162\1\157\1\155\1\122\1\144\1\172\1\141\1\163\1\141"+
+        "\1\170\1\117\1\124\1\164\1\143\1\156\1\162\1\145\1\163\2\164\1\156"+
+        "\1\162\1\163\1\161\1\163\1\164\1\157\1\116\1\157\1\146\1\uffff\1"+
+        "\162\1\116\1\115\1\154\1\uffff\1\164\1\160\1\125\1\124\1\114\5\uffff"+
+        "\1\157\1\165\1\160\2\145\1\141\1\143\2\145\1\154\1\160\2\162\1\141"+
+        "\2\145\1\154\1\172\1\125\1\uffff\1\145\1\163\1\166\1\144\1\156\1"+
+        "\160\1\143\1\162\1\160\1\141\2\165\1\160\1\145\1\150\1\143\1\141"+
+        "\1\151\1\156\1\154\1\160\1\162\1\164\1\162\1\154\1\122\1\155\1\166"+
+        "\1\141\1\163\1\145\1\156\1\123\1\160\1\166\1\162\2\160\1\111\1\151"+
+        "\1\uffff\1\143\1\151\1\156\1\145\1\114\1\105\1\145\1\141\1\145\1"+
+        "\153\1\161\1\145\1\151\1\145\1\157\1\145\1\153\1\164\1\165\1\145"+
+        "\1\150\1\160\1\107\1\160\1\164\1\155\1\105\1\102\1\165\2\145\1\102"+
+        "\1\172\1\125\1\163\1\151\1\157\1\165\1\141\1\172\1\164\3\162\1\165"+
+        "\1\157\1\163\1\141\1\143\2\162\1\165\1\uffff\1\124\1\156\1\155\2"+
+        "\151\1\145\1\141\1\145\2\141\2\145\1\157\1\154\1\164\1\151\1\162"+
+        "\1\157\1\165\1\172\1\164\1\153\1\166\2\143\1\145\1\157\1\165\1\163"+
+        "\1\151\1\145\1\106\1\172\2\151\1\145\1\141\1\155\1\151\1\172\1\141"+
+        "\1\171\1\145\1\151\1\164\1\101\1\154\1\116\1\146\1\153\2\143\1\144"+
+        "\2\172\1\162\1\160\1\107\1\145\1\165\1\155\1\157\1\162\1\156\1\107"+
+        "\1\101\1\162\1\151\1\155\1\123\1\111\1\172\2\111\1\141\1\172\1\105"+
+        "\1\145\1\162\1\156\1\114\1\uffff\1\105\1\151\1\162\1\156\1\162\1"+
+        "\163\1\uffff\2\171\1\151\1\146\1\124\1\145\1\156\1\145\1\143\1\151"+
+        "\1\156\1\104\1\145\1\172\1\164\1\145\1\166\1\144\1\163\1\142\1\143"+
+        "\1\164\2\172\1\163\1\165\1\145\1\151\1\162\2\156\1\162\1\uffff\1"+
+        "\111\1\102\1\151\1\103\1\150\1\143\1\163\1\156\1\145\1\156\1\154"+
+        "\1\162\1\uffff\1\164\1\144\1\163\1\142\1\145\1\166\1\uffff\1\164"+
+        "\1\163\1\172\1\143\1\101\1\143\1\145\1\107\1\151\1\102\1\103\1\150"+
+        "\1\120\2\uffff\1\156\1\163\1\162\1\144\1\145\1\142\2\156\1\145\1"+
+        "\162\1\143\1\141\1\162\1\142\1\171\1\143\1\164\1\uffff\1\157\1\164"+
+        "\1\156\1\157\1\154\1\uffff\1\122\1\172\1\122\1\144\1\105\1\172\1"+
+        "\164\1\145\1\163\1\143\1\145\3\160\1\141\1\171\1\145\1\162\1\145"+
+        "\1\156\1\145\1\107\2\164\2\141\1\145\1\156\1\uffff\1\124\1\164\1"+
+        "\145\1\151\1\163\1\151\1\145\1\165\2\uffff\1\163\1\156\1\172\1\157"+
+        "\1\151\1\124\1\163\1\143\1\156\4\157\1\145\1\164\1\151\1\145\1\151"+
+        "\1\107\1\165\1\141\1\145\1\151\1\145\1\163\1\151\1\164\1\145\1\165"+
+        "\1\164\1\uffff\1\145\1\143\1\164\2\172\1\145\2\157\1\124\1\104\1"+
+        "\141\1\165\1\141\1\102\1\156\1\154\1\163\1\141\1\156\1\141\1\164"+
+        "\1\143\1\145\1\154\1\156\1\164\1\145\1\144\1\145\1\146\1\155\1\104"+
+        "\1\137\1\uffff\1\162\2\145\1\172\1\uffff\1\157\1\144\2\145\1\101"+
+        "\3\145\1\164\1\143\1\160\1\143\1\157\1\161\1\143\1\156\1\162\1\145"+
+        "\1\171\1\143\1\154\2\143\1\156\1\171\1\145\1\122\1\144\1\156\1\151"+
+        "\1\154\1\163\1\162\1\157\1\144\1\uffff\1\156\1\144\1\156\1\171\2"+
+        "\145\1\146\1\155\1\170\1\162\1\155\1\163\1\162\1\145\1\151\1\164"+
+        "\1\156\1\143\1\162\1\157\1\164\1\161\1\166\1\144\1\151\1\154\1\145"+
+        "\1\122\1\162\1\145\1\111\1\164\1\151\2\uffff\1\162\1\170\1\155\1"+
+        "\143\2\162\1\106\2\154\1\151\1\145\1\143\1\171\1\172\1\154\1\164"+
+        "\2\151\1\164\1\101\1\171\1\143\1\151\1\162\1\171\1\162\1\154\1\160"+
+        "\1\151\1\117\1\157\1\161\1\156\1\uffff\1\162\1\122\1\124\1\104\1"+
+        "\143\1\163\1\172\1\144\1\151\2\145\1\154\1\166\1\165\1\151\1\164"+
+        "\1\141\1\162\1\172\1\145\1\101\1\154\1\151\1\164\1\160\1\162\1\145"+
+        "\1\122\1\147\1\156\1\151\1\163\1\145\1\162\1\151\1\163\1\122\1\147"+
+        "\1\160\1\124\1\104\1\154\1\160\1\102\1\172\1\160\1\172\1\157\1\150"+
+        "\1\157\1\145\1\164\2\141\1\165\1\151\1\165\1\145\1\122\1\156\1\151"+
+        "\1\162\2\145\1\155\1\156\1\151\1\157\1\172\1\102\1\160\1\164\1\141"+
+        "\1\157\1\172\1\154\1\141\1\156\1\150\1\171\1\103\1\145\1\uffff\1"+
+        "\103\1\151\1\156\1\157\1\101\1\143\1\103\1\150\1\157\1\141\1\102"+
+        "\1\141\1\165\1\157\1\163\1\106\1\166\1\165\1\143\1\171\1\157\1\145"+
+        "\1\151\1\145\1\164\1\172\1\uffff\1\123\1\157\2\172\1\141\2\151\1"+
+        "\156\1\144\1\163\2\151\1\uffff\1\172\1\143\1\141\1\156\2\145\1\172"+
+        "\1\163\1\157\1\145\1\101\1\147\1\164\1\157\2\172\1\156\1\150\1\157"+
+        "\1\145\1\101\1\145\1\151\1\145\1\165\1\157\1\145\1\uffff\1\157\1"+
+        "\uffff\1\142\1\141\1\156\1\104\1\111\1\164\1\151\1\163\1\157\1\145"+
+        "\1\104\1\157\1\145\1\147\1\164\1\172\1\163\2\172\1\160\1\157\1\156"+
+        "\1\uffff\1\145\1\157\1\151\1\156\1\142\1\uffff\1\141\1\103\1\164"+
+        "\1\145\1\141\1\172\1\157\1\163\2\141\1\145\1\156\1\143\1\164\1\157"+
+        "\1\162\1\156\1\164\1\145\1\164\1\145\1\156\1\164\1\137\2\151\1\171"+
+        "\1\172\2\154\2\155\1\151\1\uffff\1\151\2\156\1\172\1\162\2\uffff"+
+        "\1\162\1\144\1\162\1\147\1\126\1\172\1\156\1\172\1\uffff\1\164\1"+
+        "\162\1\147\1\162\1\163\1\172\1\uffff\1\157\2\154\1\163\1\122\1\171"+
+        "\1\162\1\172\2\uffff\1\147\1\151\2\154\1\163\1\172\2\155\1\145\1"+
+        "\156\1\150\1\156\1\141\1\166\1\104\1\141\1\157\1\156\1\151\1\156"+
+        "\1\123\2\156\1\141\2\154\1\122\1\171\1\uffff\1\157\2\uffff\1\165"+
+        "\1\156\1\172\1\150\1\156\1\157\1\163\1\141\1\154\1\141\1\145\1\144"+
+        "\1\166\1\uffff\1\156\1\172\2\154\1\144\1\172\1\164\1\151\1\156\1"+
+        "\157\1\172\1\151\1\150\1\151\1\156\1\145\1\162\1\105\1\144\1\162"+
+        "\1\122\1\157\1\uffff\3\145\1\141\1\157\1\147\1\164\1\172\1\uffff"+
+        "\1\157\1\141\2\145\1\120\1\141\1\uffff\1\145\1\141\1\151\1\141\1"+
+        "\120\1\146\1\172\1\uffff\1\165\2\145\1\163\2\145\2\172\1\uffff\1"+
+        "\105\1\160\2\145\1\163\1\uffff\1\145\1\141\1\156\1\145\1\141\1\145"+
+        "\1\142\1\151\1\141\1\164\1\155\1\164\1\157\1\145\1\104\1\141\1\122"+
+        "\1\143\1\164\3\145\1\115\1\165\1\164\1\172\1\uffff\1\141\1\145\1"+
+        "\156\1\151\1\142\2\154\1\144\1\102\1\151\1\164\1\uffff\1\154\1\104"+
+        "\1\102\1\uffff\1\151\1\157\1\164\1\156\1\uffff\1\157\1\141\1\157"+
+        "\1\143\1\156\1\151\1\114\3\145\1\155\1\172\1\147\1\123\3\156\1\151"+
+        "\1\uffff\1\166\1\164\2\144\1\141\1\162\1\144\1\164\1\157\1\164\2"+
+        "\141\1\uffff\1\162\1\172\1\147\1\145\2\163\2\uffff\1\156\2\172\1"+
+        "\147\1\145\1\123\1\156\1\143\1\156\1\166\1\156\1\151\1\157\1\164"+
+        "\1\141\1\160\1\145\1\164\1\156\1\144\1\106\1\155\1\145\1\171\1\141"+
+        "\1\172\1\147\1\163\1\141\1\145\1\162\1\120\1\uffff\1\166\1\156\1"+
+        "\172\1\164\1\151\1\172\1\154\1\103\1\145\1\157\2\145\1\172\1\151"+
+        "\1\145\1\157\1\156\2\145\1\151\1\156\1\166\1\156\1\151\1\164\1\142"+
+        "\1\105\2\144\1\154\1\160\1\uffff\1\141\1\160\1\144\1\172\1\141\1"+
+        "\164\2\151\2\122\1\162\1\151\1\102\1\151\1\156\1\151\1\162\2\143"+
+        "\1\172\1\uffff\1\141\1\155\1\157\1\172\1\164\1\uffff\1\172\1\uffff"+
+        "\1\141\1\155\1\160\1\144\1\151\1\164\1\151\1\164\1\154\1\162\1\141"+
+        "\1\124\1\157\1\162\1\141\1\114\1\102\1\172\1\160\1\154\1\172\1\124"+
+        "\1\uffff\1\141\1\157\1\163\1\156\1\143\1\141\1\151\1\164\1\uffff"+
+        "\1\151\1\154\1\162\1\uffff\1\172\1\157\1\150\1\162\1\170\1\143\1"+
+        "\145\1\141\1\143\1\162\1\uffff\1\163\1\150\1\156\1\172\1\170\1\143"+
+        "\1\172\1\103\1\151\1\103\1\156\1\111\1\165\1\115\2\122\1\141\1\157"+
+        "\1\164\1\145\1\123\1\uffff\1\164\1\171\1\144\3\157\2\141\1\145\1"+
+        "\157\1\172\1\157\1\141\2\145\1\uffff\1\164\1\142\1\165\1\uffff\1"+
+        "\151\1\uffff\1\164\1\142\1\145\1\123\1\156\1\111\1\157\1\172\1\151"+
+        "\1\172\1\124\1\171\3\156\1\151\1\145\1\uffff\1\154\1\141\1\uffff"+
+        "\1\171\1\164\1\165\2\163\1\145\1\162\1\157\1\172\1\157\1\151\1\145"+
+        "\1\uffff\1\155\1\141\1\163\3\164\1\162\1\164\1\145\1\164\1\141\1"+
+        "\172\1\uffff\2\164\1\141\3\157\1\147\1\156\1\164\1\105\2\157\1\164"+
+        "\1\156\1\151\1\143\1\160\1\165\1\172\1\151\1\156\2\154\1\155\1\142"+
+        "\1\150\1\156\1\uffff\1\156\1\155\1\163\1\172\1\151\1\154\1\162\1"+
+        "\164\1\151\1\154\1\143\1\160\1\147\1\156\1\162\1\uffff\1\164\1\uffff"+
+        "\1\171\1\160\1\145\1\141\1\143\1\156\1\150\1\145\1\164\1\160\1\151"+
+        "\1\162\1\106\1\151\1\123\1\141\1\162\1\uffff\1\156\1\164\1\161\1"+
+        "\160\1\166\2\172\1\157\1\165\1\141\1\151\1\161\1\162\1\166\1\uffff"+
+        "\1\172\1\157\1\164\1\165\1\162\1\165\1\120\1\163\1\151\1\116\2\154"+
+        "\1\151\1\145\1\157\1\151\1\145\1\162\1\uffff\1\156\1\163\3\145\1"+
+        "\154\1\141\2\172\1\145\2\172\1\171\1\uffff\1\157\1\171\1\143\1\171"+
+        "\1\157\1\171\1\151\1\145\1\120\1\163\1\172\1\151\1\160\1\145\1\156"+
+        "\1\154\1\145\1\153\1\141\1\172\1\151\1\145\1\157\1\143\1\165\1\164"+
+        "\1\160\1\141\1\155\2\172\1\151\1\165\1\157\1\151\1\uffff\1\172\1"+
+        "\uffff\2\162\1\155\1\157\1\165\2\151\1\uffff\1\162\1\151\1\156\1"+
+        "\172\1\156\1\141\1\164\1\157\1\124\2\145\1\157\2\156\1\146\1\143"+
+        "\1\145\1\147\3\172\1\164\1\145\1\166\2\uffff\1\164\2\uffff\1\160"+
+        "\1\156\1\103\1\145\1\172\1\156\1\103\1\146\1\143\1\141\1\164\1\uffff"+
+        "\2\145\1\172\1\164\1\102\2\122\1\166\1\uffff\1\157\1\172\1\156\1"+
+        "\145\1\156\1\171\1\145\1\160\1\145\2\uffff\2\145\1\156\1\157\1\uffff"+
+        "\1\163\1\156\1\145\1\156\1\145\1\142\1\157\1\172\1\157\1\164\1\uffff"+
+        "\1\164\1\162\1\141\1\156\1\123\2\172\1\156\1\164\1\103\2\151\1\172"+
+        "\1\122\3\uffff\1\145\1\172\1\151\2\145\1\103\1\157\1\124\1\uffff"+
+        "\1\103\1\157\2\151\1\162\1\141\1\163\1\172\1\uffff\1\172\3\145\1"+
+        "\151\1\156\1\uffff\1\103\1\124\1\143\1\106\1\143\1\141\1\164\1\163"+
+        "\1\156\1\145\1\162\1\172\1\120\1\164\1\172\1\156\1\165\1\162\1\uffff"+
+        "\1\156\2\104\1\141\1\156\2\172\2\uffff\1\163\1\172\1\157\1\143\1"+
+        "\146\1\uffff\1\145\1\162\1\uffff\1\157\1\162\1\172\1\157\1\156\1"+
+        "\171\1\157\1\156\1\143\1\146\1\141\1\156\1\172\2\uffff\1\150\1\146"+
+        "\1\163\1\157\1\163\1\157\1\171\1\164\1\165\1\151\1\143\1\145\1\172"+
+        "\1\143\1\156\1\172\1\uffff\1\141\1\145\1\uffff\1\143\1\164\1\172"+
+        "\1\102\2\151\1\155\1\143\2\uffff\1\150\1\uffff\1\156\1\141\1\151"+
+        "\1\161\1\172\1\162\1\172\1\uffff\1\156\1\164\1\160\1\156\1\164\1"+
+        "\141\1\151\1\155\1\143\1\uffff\1\141\1\145\1\157\1\162\1\150\1\156"+
+        "\1\160\1\151\1\156\1\146\1\151\1\162\1\uffff\1\171\1\164\1\uffff"+
+        "\2\162\1\171\1\151\1\uffff\1\141\2\163\2\145\1\151\1\156\1\164\1"+
+        "\143\1\165\1\uffff\1\172\1\uffff\1\156\2\145\1\156\1\145\1\164\1"+
+        "\143\2\145\1\166\1\162\1\165\1\172\1\151\1\156\1\145\1\157\1\143"+
+        "\1\151\1\164\3\172\1\141\2\172\1\157\1\162\3\164\1\122\1\160\1\145"+
+        "\1\151\1\141\1\151\1\uffff\1\145\1\170\1\172\1\145\1\170\1\151\1"+
+        "\141\1\164\1\122\1\151\1\145\1\162\1\uffff\1\160\1\145\1\172\1\156"+
+        "\1\164\1\143\1\171\3\uffff\1\155\2\uffff\1\156\3\162\2\145\1\172"+
+        "\1\143\1\157\1\164\1\162\1\143\1\164\1\uffff\1\143\1\164\1\157\1"+
+        "\164\2\145\1\157\1\156\1\143\1\172\1\143\1\uffff\1\172\1\151\1\141"+
+        "\1\172\1\145\1\172\3\151\1\162\1\146\1\uffff\1\164\1\156\2\151\1"+
+        "\164\1\172\1\164\1\172\1\156\1\151\1\162\1\146\1\162\1\143\1\145"+
+        "\1\uffff\1\164\1\uffff\1\157\1\164\1\uffff\1\164\1\uffff\1\145\2"+
+        "\142\1\172\1\145\1\157\1\172\1\157\1\156\1\157\1\uffff\1\157\1\uffff"+
+        "\1\172\1\157\1\172\1\145\1\172\1\145\1\124\1\157\1\156\1\151\1\145"+
+        "\1\162\2\165\1\uffff\2\162\1\uffff\1\156\1\147\2\162\1\uffff\1\156"+
+        "\1\uffff\1\162\1\uffff\1\172\1\171\1\162\1\172\1\157\1\162\1\172"+
+        "\2\164\1\145\2\172\1\105\2\163\1\172\1\145\1\uffff\1\160\1\172\1"+
+        "\uffff\1\156\1\172\1\uffff\2\151\1\156\2\uffff\1\156\2\172\1\uffff"+
+        "\1\156\1\145\1\uffff\1\172\1\uffff\2\157\1\143\1\164\2\uffff\1\143"+
+        "\1\172\1\uffff\2\156\1\145\1\151\1\145\1\uffff\3\172\1\164\1\172"+
+        "\3\uffff\1\171\1\uffff\1\172\1\uffff";
+    static final String DFA12_acceptS =
+        "\2\uffff\1\2\2\uffff\1\5\1\6\4\uffff\1\13\1\14\22\uffff\1\142\2"+
+        "\uffff\1\170\5\uffff\1\u00a2\1\u00a3\3\uffff\1\u00a7\1\u00a8\1\uffff"+
+        "\1\u00a2\1\2\3\uffff\1\5\1\6\10\uffff\1\13\1\14\62\uffff\1\142\4"+
+        "\uffff\1\170\5\uffff\1\u00a3\1\u00a4\1\u00a5\1\u00a6\1\u00a7\23"+
+        "\uffff\1\u009d\50\uffff\1\161\64\uffff\1\u0095\121\uffff\1\u009e"+
+        "\6\uffff\1\3\40\uffff\1\164\14\uffff\1\u0099\6\uffff\1\32\15\uffff"+
+        "\1\u0097\1\u009a\21\uffff\1\u009b\5\uffff\1\u009c\34\uffff\1\u009f"+
+        "\10\uffff\1\162\1\71\36\uffff\1\73\41\uffff\1\167\4\uffff\1\u00a0"+
+        "\43\uffff\1\154\41\uffff\1\165\1\u0096\41\uffff\1\u0098\122\uffff"+
+        "\1\110\32\uffff\1\34\14\uffff\1\140\33\uffff\1\70\1\uffff\1\127"+
+        "\26\uffff\1\41\5\uffff\1\156\41\uffff\1\4\5\uffff\1\43\1\25\10\uffff"+
+        "\1\11\6\uffff\1\100\10\uffff\1\77\1\113\34\uffff\1\40\1\uffff\1"+
+        "\35\1\65\15\uffff\1\u0089\26\uffff\1\1\10\uffff\1\7\6\uffff\1\10"+
+        "\7\uffff\1\37\10\uffff\1\15\5\uffff\1\36\32\uffff\1\116\13\uffff"+
+        "\1\u0094\3\uffff\1\124\4\uffff\1\131\22\uffff\1\67\14\uffff\1\27"+
+        "\6\uffff\1\166\1\112\40\uffff\1\115\37\uffff\1\51\24\uffff\1\101"+
+        "\5\uffff\1\17\1\uffff\1\135\26\uffff\1\42\10\uffff\1\126\3\uffff"+
+        "\1\103\12\uffff\1\u0087\25\uffff\1\121\17\uffff\1\20\3\uffff\1\152"+
+        "\1\uffff\1\22\21\uffff\1\157\2\uffff\1\u008a\14\uffff\1\105\14\uffff"+
+        "\1\117\33\uffff\1\122\17\uffff\1\107\1\uffff\1\150\21\uffff\1\55"+
+        "\16\uffff\1\111\22\uffff\1\46\15\uffff\1\120\43\uffff\1\125\1\uffff"+
+        "\1\u0081\7\uffff\1\173\30\uffff\1\76\1\33\1\uffff\1\12\1\56\13\uffff"+
+        "\1\21\10\uffff\1\171\11\uffff\1\44\1\147\4\uffff\1\61\12\uffff\1"+
+        "\132\16\uffff\1\30\1\u0082\1\u0085\10\uffff\1\u008c\10\uffff\1\26"+
+        "\6\uffff\1\31\22\uffff\1\175\7\uffff\1\u0083\1\u0086\5\uffff\1\45"+
+        "\2\uffff\1\u008d\15\uffff\1\24\1\60\20\uffff\1\62\2\uffff\1\134"+
+        "\10\uffff\1\160\1\u00a1\1\uffff\1\16\7\uffff\1\137\11\uffff\1\130"+
+        "\14\uffff\1\151\2\uffff\1\57\4\uffff\1\106\12\uffff\1\47\1\uffff"+
+        "\1\66\45\uffff\1\23\14\uffff\1\52\7\uffff\1\75\1\53\1\174\1\uffff"+
+        "\1\104\1\u0088\15\uffff\1\144\13\uffff\1\145\13\uffff\1\u008b\17"+
+        "\uffff\1\u008e\1\uffff\1\153\2\uffff\1\141\1\uffff\1\163\12\uffff"+
+        "\1\176\1\uffff\1\177\16\uffff\1\u008f\2\uffff\1\72\4\uffff\1\50"+
+        "\1\uffff\1\u0090\1\uffff\1\114\21\uffff\1\u0093\2\uffff\1\155\2"+
+        "\uffff\1\123\3\uffff\1\u0084\1\143\3\uffff\1\54\2\uffff\1\u0080"+
+        "\1\uffff\1\102\4\uffff\1\63\1\64\2\uffff\1\136\5\uffff\1\146\5\uffff"+
+        "\1\172\1\133\1\u0091\1\uffff\1\u0092\1\uffff\1\74";
+    static final String DFA12_specialS =
+        "\1\2\51\uffff\1\0\1\1\u077c\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\56\2\55\2\56\1\55\22\56\1\55\1\56\1\52\4\56\1\53\1\13\1"+
+            "\14\2\56\1\5\1\37\1\42\1\54\12\51\7\56\1\33\1\25\1\20\1\44\1"+
+            "\31\1\32\2\50\1\11\2\50\1\35\1\50\1\40\1\45\1\21\1\50\1\1\1"+
+            "\23\2\50\1\46\4\50\3\56\1\47\1\50\1\56\1\30\1\17\1\10\1\4\1"+
+            "\26\1\27\2\50\1\7\2\50\1\36\1\24\1\3\1\43\1\12\1\50\1\16\1\15"+
+            "\1\22\1\50\1\41\1\34\3\50\1\2\1\56\1\6\uff82\56",
+            "\1\57",
+            "",
+            "\1\62",
+            "\1\63\3\uffff\1\64",
+            "",
+            "",
+            "\1\67",
+            "\1\72\6\uffff\1\71\6\uffff\1\70",
+            "\1\74\37\uffff\1\73",
+            "\1\75\20\uffff\1\76",
+            "",
+            "",
+            "\1\104\1\uffff\1\102\5\uffff\1\101\13\uffff\1\103",
+            "\1\106\3\uffff\1\105\3\uffff\1\107",
+            "\1\112\3\uffff\1\111\6\uffff\1\110\5\uffff\1\113",
+            "\1\116\30\uffff\1\115\15\uffff\1\114",
+            "\1\120\20\uffff\1\117",
+            "\1\121",
+            "\1\130\14\uffff\1\127\1\uffff\1\124\1\uffff\1\125\3\uffff\1"+
+            "\122\12\uffff\1\126\1\123",
+            "\1\131\5\uffff\1\132",
+            "\1\137\11\uffff\1\140\7\uffff\1\134\12\uffff\1\133\2\uffff"+
+            "\1\136\2\uffff\1\135",
+            "\1\142\11\uffff\1\141",
+            "\1\143\5\uffff\1\144\2\uffff\1\145",
+            "\1\147\17\uffff\1\146",
+            "\1\150",
+            "\1\151\5\uffff\1\152",
+            "\1\153\1\154\17\uffff\1\155",
+            "\1\156",
+            "\1\160\37\uffff\1\157",
+            "\1\162\11\uffff\1\161",
+            "",
+            "\1\165\5\uffff\1\166\31\uffff\1\164",
+            "\1\167",
+            "",
+            "\1\171",
+            "\1\173\25\uffff\1\172",
+            "\1\174",
+            "\1\175",
+            "\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "",
+            "\0\177",
+            "\0\177",
+            "\1\u0080\4\uffff\1\u0081",
+            "",
+            "",
+            "\1\u0086\3\uffff\1\u0083\1\u0084\1\uffff\1\u0085",
+            "",
+            "",
+            "\1\u0087",
+            "\1\u0088",
+            "\1\u0089",
+            "",
+            "",
+            "\1\u008c\7\uffff\1\u008b\5\uffff\1\u008a",
+            "\1\u008e\13\uffff\1\u008d",
+            "\1\u008f",
+            "\1\u0090",
+            "\1\u0093\7\uffff\1\u0092\5\uffff\1\u0091",
+            "\12\60\7\uffff\16\60\1\u0095\4\60\1\u0094\6\60\4\uffff\1\60"+
+            "\1\uffff\32\60",
+            "\1\u0097\1\u0098",
+            "\1\u009a\11\uffff\1\u0099",
+            "",
+            "",
+            "\1\u009b",
+            "\1\u009c",
+            "\1\u009d\16\uffff\1\u009e",
+            "\1\u009f",
+            "\1\u00a0\4\uffff\1\u00a1\1\uffff\1\u00a3\1\u00a2",
+            "\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7",
+            "\1\u00a8",
+            "\1\u00a9",
+            "\1\u00ac\12\uffff\1\u00aa\1\u00ab\1\u00ad\3\uffff\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b1\5\uffff\1\u00b2",
+            "\1\u00b3\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba\15\uffff\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00ce\3\uffff\1\u00cd",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\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\u00e5\1\u00e4",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u00f5",
+            "",
+            "\1\u00f7\3\uffff\1\u00f6",
+            "\1\u00f8",
+            "\1\u00fb\1\u00fa\22\uffff\1\u00f9",
+            "\1\u00fc",
+            "\1\u00fe\1\u00fd",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0107\1\u0106",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u0110\2\uffff\1\u010f",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0119\1\u0118\22\uffff\1\u0117",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\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",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u014f\37\uffff\1\u014e",
+            "\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",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\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",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a",
+            "\1\u019b",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\u019f",
+            "\1\u01a0",
+            "\1\u01a1\7\uffff\1\u01a2",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u01a4\6\uffff\1\u01a5",
+            "\1\u01a7\5\uffff\1\u01a6",
+            "\1\u01a8",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\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\u01ba\13\uffff\1\u01bb\1\uffff\1\u01bc\1\uffff\1\u01b9",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2\7\uffff\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\u01d8",
+            "",
+            "\1\u01da\5\uffff\1\u01d9",
+            "\1\u01db",
+            "\1\u01dc",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\u01e1\4\uffff\1\u01e0",
+            "\1\u01e2",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\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\u0209",
+            "\1\u020a",
+            "",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "",
+            "\1\u0210",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0212\1\uffff\1\u0213",
+            "\1\u0214",
+            "\1\u0215",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\u021b",
+            "\1\u021c",
+            "\1\u021d",
+            "\1\u021e\15\uffff\1\u021f",
+            "\1\u0220",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\u0229",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\u022d",
+            "",
+            "\1\u022e\12\uffff\1\u022f",
+            "\1\u0230",
+            "\1\u0231",
+            "\1\u0232\3\uffff\1\u0233",
+            "\1\u0234",
+            "\1\u0235",
+            "\1\u0236",
+            "\1\u0237",
+            "",
+            "",
+            "\1\u0238",
+            "\1\u0239",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u023b",
+            "\1\u023c\3\uffff\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\1\u0240",
+            "\1\u0241",
+            "\1\u0242",
+            "\1\u0243",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0248\15\uffff\1\u0247\24\uffff\1\u0246",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\u024c",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\u024f",
+            "\1\u0250",
+            "\1\u0251",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "\1\u0255",
+            "\1\u0256",
+            "\1\u0257",
+            "\1\u0258",
+            "",
+            "\1\u0259",
+            "\1\u025a",
+            "\1\u025b",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u025e",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\u0261\16\uffff\1\u0263\3\uffff\1\u0262",
+            "\1\u0264",
+            "\1\u0265",
+            "\1\u0266",
+            "\1\u0267",
+            "\1\u0268",
+            "\1\u0269",
+            "\1\u026a",
+            "\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",
+            "\1\u027b",
+            "",
+            "\1\u027c",
+            "\1\u027d",
+            "\1\u027e",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\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",
+            "\1\u0290",
+            "\1\u0291",
+            "\1\u0292",
+            "\1\u0293",
+            "\1\u0294",
+            "\1\u0295",
+            "\1\u0296",
+            "\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",
+            "\1\u02ac",
+            "\1\u02ad",
+            "\1\u02ae",
+            "\1\u02af",
+            "\1\u02b0",
+            "\1\u02b1",
+            "\1\u02b2",
+            "\1\u02b3",
+            "\1\u02b4",
+            "\1\u02b5",
+            "\1\u02b6",
+            "\1\u02b7",
+            "\1\u02b8",
+            "\1\u02b9",
+            "\1\u02ba",
+            "\1\u02bb",
+            "\1\u02bc",
+            "\1\u02bd",
+            "\1\u02be",
+            "\1\u02bf",
+            "\1\u02c0",
+            "\1\u02c1",
+            "\1\u02c2",
+            "\1\u02c3",
+            "",
+            "",
+            "\1\u02c4",
+            "\1\u02c5",
+            "\1\u02c6",
+            "\1\u02c7",
+            "\1\u02c8",
+            "\1\u02c9",
+            "\1\u02ca",
+            "\1\u02cb",
+            "\1\u02cc",
+            "\1\u02cd",
+            "\1\u02ce",
+            "\1\u02cf",
+            "\1\u02d1\17\uffff\1\u02d0",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u02d3",
+            "\1\u02d4",
+            "\1\u02d5",
+            "\1\u02d6",
+            "\1\u02d7",
+            "\1\u02d8",
+            "\1\u02d9",
+            "\1\u02da",
+            "\1\u02db",
+            "\1\u02dc",
+            "\1\u02dd",
+            "\1\u02de",
+            "\1\u02df",
+            "\1\u02e0",
+            "\1\u02e1",
+            "\1\u02e2",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\u02e5",
+            "",
+            "\1\u02e6",
+            "\1\u02e8\15\uffff\1\u02e7",
+            "\1\u02e9",
+            "\1\u02ea",
+            "\1\u02eb",
+            "\1\u02ec",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u02ee",
+            "\1\u02ef",
+            "\1\u02f0",
+            "\1\u02f1",
+            "\1\u02f2",
+            "\1\u02f3",
+            "\1\u02f4",
+            "\1\u02f6\3\uffff\1\u02f5",
+            "\1\u02f7",
+            "\1\u02f8",
+            "\1\u02f9",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u02fb",
+            "\1\u02fc",
+            "\1\u02fd",
+            "\1\u02fe",
+            "\1\u02ff",
+            "\1\u0300",
+            "\1\u0301",
+            "\1\u0302",
+            "\1\u0304\15\uffff\1\u0303",
+            "\1\u0305",
+            "\1\u0306",
+            "\1\u0307",
+            "\1\u0308",
+            "\1\u0309",
+            "\1\u030a",
+            "\1\u030b",
+            "\1\u030c",
+            "\1\u030e\15\uffff\1\u030d",
+            "\1\u030f",
+            "\1\u0310",
+            "\1\u0311",
+            "\1\u0312",
+            "\1\u0313",
+            "\1\u0314",
+            "\1\u0315",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0317",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0319",
+            "\1\u031a",
+            "\1\u031b",
+            "\1\u031c",
+            "\1\u031d",
+            "\1\u031e",
+            "\1\u031f",
+            "\1\u0320",
+            "\1\u0321",
+            "\1\u0322",
+            "\1\u0323",
+            "\1\u0325\15\uffff\1\u0324",
+            "\1\u0326",
+            "\1\u0327",
+            "\1\u0328",
+            "\1\u0329",
+            "\1\u032a",
+            "\1\u032b",
+            "\1\u032c",
+            "\1\u032d",
+            "\1\u032e",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0330",
+            "\1\u0331",
+            "\1\u0332",
+            "\1\u0333",
+            "\1\u0334",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0336\50\uffff\1\u0337",
+            "\1\u0338",
+            "\1\u0339",
+            "\1\u033a",
+            "\1\u033b",
+            "\1\u033c",
+            "\1\u033d",
+            "",
+            "\1\u033e",
+            "\1\u033f",
+            "\1\u0340",
+            "\1\u0341",
+            "\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",
+            "\1\u0350",
+            "\1\u0351",
+            "\1\u0352",
+            "\1\u0353",
+            "\1\u0354",
+            "\1\u0355",
+            "\1\u0356",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u0359\15\uffff\1\u0358",
+            "\1\u035a",
+            "\12\60\7\uffff\17\60\1\u035c\12\60\4\uffff\1\60\1\uffff\22"+
+            "\60\1\u035b\7\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u035f",
+            "\1\u0360",
+            "\1\u0361",
+            "\1\u0362",
+            "\1\u0363",
+            "\1\u0364",
+            "\1\u0365",
+            "\1\u0366",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0368",
+            "\1\u0369",
+            "\1\u036a",
+            "\1\u036b",
+            "\1\u036c",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\22\60\1\u036d\7\60",
+            "\1\u036f",
+            "\1\u0370",
+            "\1\u0371",
+            "\1\u0372",
+            "\1\u0373",
+            "\1\u0374",
+            "\1\u0375",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\22\60\1\u0376\7\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0379",
+            "\1\u037a",
+            "\1\u037b",
+            "\1\u037c",
+            "\1\u037d",
+            "\1\u037e",
+            "\1\u037f",
+            "\1\u0380",
+            "\1\u0381",
+            "\1\u0382",
+            "\1\u0383",
+            "",
+            "\1\u0384",
+            "",
+            "\1\u0385",
+            "\1\u0386",
+            "\1\u0387",
+            "\1\u0389\1\u0388",
+            "\1\u038a",
+            "\1\u038b",
+            "\1\u038c",
+            "\1\u038d",
+            "\1\u038e",
+            "\1\u038f",
+            "\1\u0390",
+            "\1\u0391",
+            "\1\u0392",
+            "\1\u0393",
+            "\1\u0394",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0396",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0399",
+            "\1\u039a",
+            "\1\u039b",
+            "",
+            "\1\u039c",
+            "\1\u039d",
+            "\1\u039e",
+            "\1\u039f",
+            "\1\u03a0",
+            "",
+            "\1\u03a1",
+            "\1\u03a2",
+            "\1\u03a3",
+            "\1\u03a4",
+            "\1\u03a5",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u03a7",
+            "\1\u03a8",
+            "\1\u03a9",
+            "\1\u03aa",
+            "\1\u03ab",
+            "\1\u03ac",
+            "\1\u03ad",
+            "\1\u03ae",
+            "\1\u03af",
+            "\1\u03b0",
+            "\1\u03b1",
+            "\1\u03b2",
+            "\1\u03b3",
+            "\1\u03b4",
+            "\1\u03b5",
+            "\1\u03b6",
+            "\1\u03b7",
+            "\1\u03b8",
+            "\1\u03b9",
+            "\1\u03ba",
+            "\1\u03bb",
+            "\12\60\7\uffff\2\60\1\u03bc\27\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u03be",
+            "\1\u03bf",
+            "\1\u03c0",
+            "\1\u03c1",
+            "\1\u03c2",
+            "",
+            "\1\u03c3",
+            "\1\u03c4",
+            "\1\u03c5",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u03c7",
+            "",
+            "",
+            "\1\u03c8",
+            "\1\u03c9",
+            "\1\u03ca",
+            "\1\u03cb",
+            "\1\u03cc",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u03ce",
+            "\1\u03cf",
+            "",
+            "\1\u03d0",
+            "\1\u03d1",
+            "\1\u03d2",
+            "\1\u03d3",
+            "\1\u03d4",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u03d6",
+            "\1\u03d7",
+            "\1\u03d8",
+            "\1\u03d9",
+            "\1\u03da",
+            "\1\u03db\17\uffff\1\u03dc",
+            "\1\u03dd",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "",
+            "\1\u03df",
+            "\1\u03e0",
+            "\1\u03e1",
+            "\1\u03e2",
+            "\1\u03e3",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u03e5",
+            "\1\u03e6",
+            "\1\u03e7",
+            "\1\u03e8",
+            "\1\u03e9",
+            "\1\u03ea",
+            "\1\u03eb",
+            "\1\u03ec",
+            "\1\u03ed",
+            "\1\u03ee",
+            "\1\u03ef",
+            "\1\u03f0",
+            "\1\u03f1",
+            "\1\u03f2",
+            "\1\u03f3\2\uffff\1\u03f4",
+            "\1\u03f5",
+            "\1\u03f6",
+            "\1\u03f7",
+            "\1\u03f8",
+            "\1\u03f9",
+            "\1\u03fa",
+            "\1\u03fb",
+            "",
+            "\1\u03fc",
+            "",
+            "",
+            "\1\u03fd",
+            "\1\u03fe",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0400",
+            "\1\u0401",
+            "\1\u0402",
+            "\1\u0403",
+            "\1\u0404",
+            "\1\u0405",
+            "\1\u0406",
+            "\1\u0407",
+            "\1\u0408",
+            "\1\u0409",
+            "",
+            "\1\u040a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u040c",
+            "\1\u040d",
+            "\1\u040e",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0410",
+            "\1\u0411",
+            "\1\u0412",
+            "\1\u0413",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\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",
+            "\1\u0424",
+            "\1\u0425",
+            "\1\u0426",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u0428",
+            "\1\u0429",
+            "\1\u042a",
+            "\1\u042b",
+            "\1\u042c",
+            "\1\u042d",
+            "",
+            "\1\u042e",
+            "\1\u042f",
+            "\1\u0430",
+            "\1\u0431",
+            "\1\u0432",
+            "\1\u0433",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u0435",
+            "\1\u0436",
+            "\1\u0437",
+            "\1\u0438",
+            "\1\u0439",
+            "\1\u043a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u043d",
+            "\1\u043e",
+            "\1\u043f",
+            "\1\u0440",
+            "\1\u0441",
+            "",
+            "\1\u0442",
+            "\1\u0443",
+            "\1\u0444",
+            "\1\u0445",
+            "\1\u0446",
+            "\1\u0447",
+            "\1\u0448",
+            "\1\u0449",
+            "\1\u044a",
+            "\1\u044b",
+            "\1\u044c",
+            "\1\u044e\1\u044d",
+            "\1\u044f",
+            "\1\u0450",
+            "\1\u0451",
+            "\1\u0452",
+            "\1\u0453",
+            "\1\u0454",
+            "\1\u0455",
+            "\1\u0456",
+            "\1\u0457",
+            "\1\u0458",
+            "\1\u045a\10\uffff\1\u0459",
+            "\1\u045b",
+            "\1\u045c",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u045e",
+            "\1\u045f",
+            "\1\u0460",
+            "\1\u0461",
+            "\1\u0462",
+            "\1\u0463",
+            "\1\u0464",
+            "\1\u0465",
+            "\1\u0466",
+            "\1\u0467",
+            "\1\u0469\5\uffff\1\u0468",
+            "",
+            "\1\u046a",
+            "\1\u046b",
+            "\1\u046c",
+            "",
+            "\1\u046d",
+            "\1\u046e",
+            "\1\u0470\5\uffff\1\u046f",
+            "\1\u0471",
+            "",
+            "\1\u0472",
+            "\1\u0473",
+            "\1\u0474",
+            "\1\u0475",
+            "\1\u0476",
+            "\1\u0477",
+            "\1\u0478",
+            "\1\u0479",
+            "\1\u047a",
+            "\1\u047b",
+            "\1\u047c",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u047e",
+            "\1\u047f",
+            "\1\u0480",
+            "\1\u0481",
+            "\1\u0482",
+            "\1\u0483",
+            "",
+            "\1\u0484",
+            "\1\u0485",
+            "\1\u0486",
+            "\1\u0487",
+            "\1\u0488",
+            "\1\u0489",
+            "\1\u048a",
+            "\1\u048b",
+            "\1\u048c",
+            "\1\u048d",
+            "\1\u048e",
+            "\1\u048f",
+            "",
+            "\1\u0490",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\22\60\1\u0491\7\60",
+            "\1\u0493",
+            "\1\u0494",
+            "\1\u0495",
+            "\1\u0496",
+            "",
+            "",
+            "\1\u0497",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\22\60\1\u0499\7\60",
+            "\1\u049b",
+            "\1\u049c",
+            "\1\u049d",
+            "\1\u049e",
+            "\1\u049f",
+            "\1\u04a0",
+            "\1\u04a1",
+            "\1\u04a2",
+            "\1\u04a3",
+            "\1\u04a4",
+            "\1\u04a5",
+            "\1\u04a6",
+            "\1\u04a7",
+            "\1\u04a8",
+            "\1\u04a9",
+            "\1\u04aa",
+            "\1\u04ab",
+            "\1\u04ac",
+            "\1\u04ad",
+            "\1\u04ae",
+            "\1\u04af",
+            "\1\u04b0",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u04b2",
+            "\1\u04b3",
+            "\1\u04b4",
+            "\1\u04b5",
+            "\1\u04b6",
+            "\1\u04b7",
+            "",
+            "\1\u04b8",
+            "\1\u04b9",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u04bb",
+            "\1\u04bc",
+            "\12\60\7\uffff\5\60\1\u04bd\24\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u04bf",
+            "\1\u04c0",
+            "\1\u04c1",
+            "\1\u04c2",
+            "\1\u04c3",
+            "\1\u04c4",
+            "\12\60\7\uffff\1\u04c7\4\60\1\u04c8\11\60\1\u04c6\1\60\1\u04c5"+
+            "\10\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u04ca",
+            "\1\u04cb",
+            "\1\u04cc",
+            "\1\u04cd",
+            "\1\u04ce",
+            "\1\u04cf",
+            "\1\u04d0",
+            "\1\u04d1",
+            "\1\u04d2",
+            "\1\u04d3",
+            "\1\u04d4",
+            "\1\u04d5",
+            "\1\u04d6",
+            "\1\u04d7",
+            "\1\u04d8",
+            "\1\u04d9",
+            "\1\u04da",
+            "\1\u04db",
+            "",
+            "\1\u04dc",
+            "\1\u04dd",
+            "\1\u04de",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u04e0",
+            "\1\u04e1",
+            "\1\u04e2",
+            "\1\u04e3",
+            "\1\u04e4",
+            "\1\u04e5",
+            "\1\u04e6",
+            "\1\u04e7",
+            "\1\u04e8",
+            "\1\u04e9",
+            "\1\u04ea",
+            "\1\u04eb",
+            "\1\u04ec",
+            "\1\u04ed",
+            "\1\u04ee",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u04f0",
+            "\1\u04f1",
+            "\1\u04f2",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u04f4",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u04f6",
+            "\1\u04f7",
+            "\1\u04f8",
+            "\1\u04f9",
+            "\1\u04fa",
+            "\1\u04fb",
+            "\1\u04fc",
+            "\1\u04fd",
+            "\1\u04fe",
+            "\1\u04ff",
+            "\1\u0500",
+            "\1\u0501",
+            "\1\u0502",
+            "\1\u0503",
+            "\1\u0504",
+            "\1\u0505",
+            "\1\u0506",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0508",
+            "\1\u0509",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u050b",
+            "",
+            "\1\u050c",
+            "\1\u050d",
+            "\1\u050e",
+            "\1\u050f",
+            "\1\u0510",
+            "\1\u0511",
+            "\1\u0512",
+            "\1\u0513",
+            "",
+            "\1\u0514",
+            "\1\u0515",
+            "\1\u0516",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0518",
+            "\1\u0519",
+            "\1\u051a",
+            "\1\u051b",
+            "\1\u051c",
+            "\1\u051d",
+            "\1\u051e",
+            "\1\u051f",
+            "\1\u0520",
+            "",
+            "\1\u0521",
+            "\1\u0522",
+            "\1\u0523",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0525",
+            "\1\u0526",
+            "\1\u0527",
+            "\1\u0528",
+            "\1\u0529",
+            "\1\u052a",
+            "\1\u052b",
+            "\1\u052c",
+            "\1\u052d",
+            "\1\u052e",
+            "\1\u052f",
+            "\1\u0530",
+            "\1\u0531",
+            "\1\u0532",
+            "\1\u0533",
+            "\1\u0534",
+            "\1\u0535",
+            "",
+            "\1\u0536",
+            "\1\u0537",
+            "\1\u0538",
+            "\1\u0539",
+            "\1\u053a",
+            "\1\u053b",
+            "\1\u053c",
+            "\1\u053d",
+            "\1\u053e",
+            "\1\u053f",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0541",
+            "\1\u0542",
+            "\1\u0543",
+            "\1\u0544",
+            "",
+            "\1\u0545",
+            "\1\u0546",
+            "\1\u0547",
+            "",
+            "\1\u0548",
+            "",
+            "\1\u0549",
+            "\1\u054a",
+            "\1\u054b",
+            "\1\u054c",
+            "\1\u054d",
+            "\1\u054e",
+            "\1\u054f",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0551",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0553",
+            "\1\u0554",
+            "\1\u0555",
+            "\1\u0556",
+            "\1\u0557",
+            "\1\u0558",
+            "\1\u0559",
+            "",
+            "\1\u055a",
+            "\1\u055b",
+            "",
+            "\1\u055c",
+            "\1\u055d",
+            "\1\u055e",
+            "\1\u055f",
+            "\1\u0560",
+            "\1\u0561",
+            "\1\u0562",
+            "\1\u0563",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0565",
+            "\1\u0566",
+            "\1\u0567",
+            "",
+            "\1\u0568",
+            "\1\u0569",
+            "\1\u056a",
+            "\1\u056b",
+            "\1\u056c",
+            "\1\u056d",
+            "\1\u056e",
+            "\1\u056f",
+            "\1\u0570",
+            "\1\u0571",
+            "\1\u0572",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u0574",
+            "\1\u0575",
+            "\1\u0576",
+            "\1\u0577",
+            "\1\u0578",
+            "\1\u0579",
+            "\1\u057a",
+            "\1\u057b",
+            "\1\u057c",
+            "\1\u057d",
+            "\1\u057e",
+            "\1\u057f",
+            "\1\u0580",
+            "\1\u0581",
+            "\1\u0582",
+            "\1\u0583",
+            "\1\u0584",
+            "\1\u0585",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0587",
+            "\1\u0588",
+            "\1\u0589",
+            "\1\u058a",
+            "\1\u058b",
+            "\1\u058c",
+            "\1\u058d",
+            "\1\u058e",
+            "",
+            "\1\u058f",
+            "\1\u0590",
+            "\1\u0591",
+            "\12\60\7\uffff\23\60\1\u0593\6\60\4\uffff\1\60\1\uffff\22\60"+
+            "\1\u0592\7\60",
+            "\1\u0595",
+            "\1\u0596",
+            "\1\u0597",
+            "\1\u0598",
+            "\1\u0599",
+            "\1\u059a",
+            "\1\u059b",
+            "\1\u059c",
+            "\1\u059d",
+            "\1\u059e",
+            "\1\u059f",
+            "",
+            "\1\u05a0",
+            "",
+            "\1\u05a1",
+            "\1\u05a2",
+            "\1\u05a3",
+            "\1\u05a4",
+            "\1\u05a5",
+            "\1\u05a6",
+            "\1\u05a7",
+            "\1\u05a8",
+            "\1\u05a9",
+            "\1\u05aa",
+            "\1\u05ab",
+            "\1\u05ac",
+            "\1\u05ad",
+            "\1\u05ae",
+            "\1\u05b0\17\uffff\1\u05af",
+            "\1\u05b1",
+            "\1\u05b2",
+            "",
+            "\1\u05b3",
+            "\1\u05b4",
+            "\1\u05b5",
+            "\1\u05b6",
+            "\1\u05b7",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\22\60\1\u05b9\7\60",
+            "\1\u05bb",
+            "\1\u05bc",
+            "\1\u05bd",
+            "\1\u05be",
+            "\1\u05bf",
+            "\1\u05c0",
+            "\1\u05c1",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u05c3",
+            "\1\u05c4",
+            "\1\u05c5",
+            "\1\u05c6",
+            "\1\u05c7",
+            "\1\u05c8",
+            "\1\u05c9",
+            "\1\u05ca",
+            "\1\u05cb",
+            "\1\u05cc",
+            "\1\u05cd",
+            "\1\u05ce",
+            "\1\u05cf",
+            "\1\u05d0",
+            "\1\u05d1",
+            "\1\u05d2",
+            "\1\u05d3",
+            "",
+            "\1\u05d4",
+            "\1\u05d5",
+            "\1\u05d6",
+            "\1\u05d7",
+            "\1\u05d8",
+            "\1\u05d9",
+            "\1\u05da",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u05dd",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u05e0",
+            "",
+            "\1\u05e1",
+            "\1\u05e2",
+            "\1\u05e3",
+            "\1\u05e4",
+            "\1\u05e5",
+            "\1\u05e6",
+            "\1\u05e7",
+            "\1\u05e8",
+            "\1\u05e9",
+            "\1\u05ea",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u05ec",
+            "\1\u05ed",
+            "\1\u05ee",
+            "\1\u05ef",
+            "\1\u05f0",
+            "\1\u05f1",
+            "\1\u05f2",
+            "\1\u05f3",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u05f5",
+            "\1\u05f6",
+            "\1\u05f7",
+            "\1\u05f8",
+            "\1\u05f9",
+            "\1\u05fa",
+            "\1\u05fb",
+            "\1\u05fc",
+            "\1\u05fd",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0600",
+            "\1\u0601",
+            "\1\u0602",
+            "\1\u0603",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u0605",
+            "\1\u0606",
+            "\1\u0607",
+            "\1\u0608",
+            "\1\u0609",
+            "\1\u060a",
+            "\1\u060b",
+            "",
+            "\1\u060c",
+            "\1\u060d",
+            "\1\u060e",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0610",
+            "\1\u0611",
+            "\1\u0612",
+            "\1\u0613",
+            "\1\u0614",
+            "\1\u0615",
+            "\1\u0616",
+            "\1\u0617",
+            "\1\u0618",
+            "\1\u0619",
+            "\1\u061a",
+            "\1\u061b",
+            "\1\u061c",
+            "\1\u061d",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0621",
+            "\1\u0622",
+            "\1\u0623",
+            "",
+            "",
+            "\1\u0624",
+            "",
+            "",
+            "\1\u0625",
+            "\1\u0626",
+            "\1\u0627",
+            "\1\u0628",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u062a",
+            "\1\u062b",
+            "\1\u062c",
+            "\1\u062d",
+            "\1\u062e",
+            "\1\u062f",
+            "",
+            "\1\u0630",
+            "\1\u0631",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0633",
+            "\1\u0634",
+            "\1\u0635",
+            "\1\u0636",
+            "\1\u0637",
+            "",
+            "\1\u0638",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u063a",
+            "\1\u063b",
+            "\1\u063c",
+            "\1\u063d",
+            "\1\u063e",
+            "\1\u063f",
+            "\1\u0640",
+            "",
+            "",
+            "\1\u0641",
+            "\1\u0642",
+            "\1\u0643",
+            "\1\u0644",
+            "",
+            "\1\u0645",
+            "\1\u0646",
+            "\1\u0647",
+            "\1\u0648",
+            "\1\u0649",
+            "\1\u064a",
+            "\1\u064b",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u064d",
+            "\1\u064e",
+            "",
+            "\1\u064f",
+            "\1\u0650",
+            "\1\u0651",
+            "\1\u0652",
+            "\1\u0653",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0656",
+            "\1\u0657",
+            "\1\u0658",
+            "\1\u0659",
+            "\1\u065a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u065c",
+            "",
+            "",
+            "",
+            "\1\u065d",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u065f",
+            "\1\u0660",
+            "\1\u0661",
+            "\1\u0662",
+            "\1\u0663",
+            "\1\u0664",
+            "",
+            "\1\u0665",
+            "\1\u0666",
+            "\1\u0667",
+            "\1\u0668",
+            "\1\u0669",
+            "\1\u066a",
+            "\1\u066b",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u066e",
+            "\1\u066f",
+            "\1\u0670",
+            "\1\u0671",
+            "\1\u0672",
+            "",
+            "\1\u0673",
+            "\1\u0674",
+            "\1\u0675",
+            "\1\u0676",
+            "\1\u0677",
+            "\1\u0678",
+            "\1\u0679",
+            "\1\u067a",
+            "\1\u067b",
+            "\1\u067c",
+            "\1\u067d",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u067f",
+            "\1\u0680",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0682",
+            "\1\u0683",
+            "\1\u0684",
+            "",
+            "\1\u0685",
+            "\1\u0686",
+            "\1\u0687",
+            "\1\u0688",
+            "\1\u0689",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "",
+            "\1\u068c",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u068e",
+            "\1\u068f",
+            "\1\u0690",
+            "",
+            "\1\u0691",
+            "\1\u0692",
+            "",
+            "\1\u0693",
+            "\1\u0694",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0696",
+            "\1\u0697",
+            "\1\u0698",
+            "\1\u0699",
+            "\1\u069a",
+            "\1\u069b",
+            "\1\u069c",
+            "\1\u069d",
+            "\1\u069e",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "",
+            "\1\u06a0",
+            "\1\u06a1",
+            "\1\u06a2",
+            "\1\u06a3",
+            "\1\u06a4",
+            "\1\u06a5",
+            "\1\u06a6",
+            "\1\u06a7",
+            "\1\u06a8",
+            "\1\u06a9",
+            "\1\u06aa",
+            "\1\u06ab",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u06ad",
+            "\1\u06ae",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u06b0",
+            "\1\u06b1",
+            "",
+            "\1\u06b2",
+            "\1\u06b3",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u06b5",
+            "\1\u06b6",
+            "\1\u06b7",
+            "\1\u06b8",
+            "\1\u06b9",
+            "",
+            "",
+            "\1\u06ba",
+            "",
+            "\1\u06bb",
+            "\1\u06bc",
+            "\1\u06bd",
+            "\1\u06be",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u06c0",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u06c2",
+            "\1\u06c3",
+            "\1\u06c4",
+            "\1\u06c5",
+            "\1\u06c6",
+            "\1\u06c7",
+            "\1\u06c8",
+            "\1\u06c9",
+            "\1\u06ca",
+            "",
+            "\1\u06cb",
+            "\1\u06cc",
+            "\1\u06cd",
+            "\1\u06ce",
+            "\1\u06cf",
+            "\1\u06d0",
+            "\1\u06d1",
+            "\1\u06d2",
+            "\1\u06d3",
+            "\1\u06d4",
+            "\1\u06d5",
+            "\1\u06d6",
+            "",
+            "\1\u06d7",
+            "\1\u06d8",
+            "",
+            "\1\u06d9",
+            "\1\u06da",
+            "\1\u06db",
+            "\1\u06dc",
+            "",
+            "\1\u06dd",
+            "\1\u06de",
+            "\1\u06df",
+            "\1\u06e0",
+            "\1\u06e1",
+            "\1\u06e2",
+            "\1\u06e3",
+            "\1\u06e4",
+            "\1\u06e5",
+            "\1\u06e6",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u06e8",
+            "\1\u06e9",
+            "\1\u06ea",
+            "\1\u06eb",
+            "\1\u06ec",
+            "\1\u06ed",
+            "\1\u06ee",
+            "\1\u06ef",
+            "\1\u06f0",
+            "\1\u06f1",
+            "\1\u06f2",
+            "\1\u06f3",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u06f5",
+            "\1\u06f6",
+            "\1\u06f7",
+            "\1\u06f8",
+            "\1\u06f9",
+            "\1\u06fa",
+            "\1\u06fb",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u06ff",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0702",
+            "\1\u0703",
+            "\1\u0704",
+            "\1\u0705",
+            "\1\u0706",
+            "\1\u0707",
+            "\1\u0708",
+            "\1\u0709",
+            "\1\u070a",
+            "\1\u070b",
+            "\1\u070c",
+            "",
+            "\1\u070d",
+            "\1\u070e",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0710",
+            "\1\u0711",
+            "\1\u0712",
+            "\1\u0713",
+            "\1\u0714",
+            "\1\u0715",
+            "\1\u0716",
+            "\1\u0717",
+            "\1\u0718",
+            "",
+            "\1\u0719",
+            "\1\u071a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u071c",
+            "\1\u071d",
+            "\1\u071e",
+            "\1\u071f",
+            "",
+            "",
+            "",
+            "\1\u0720",
+            "",
+            "",
+            "\1\u0721",
+            "\1\u0722",
+            "\1\u0723",
+            "\1\u0724",
+            "\1\u0725",
+            "\1\u0726",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0728",
+            "\1\u0729",
+            "\1\u072a",
+            "\1\u072b",
+            "\1\u072c",
+            "\1\u072d",
+            "",
+            "\1\u072e",
+            "\1\u072f",
+            "\1\u0730",
+            "\1\u0731",
+            "\1\u0732",
+            "\1\u0733",
+            "\1\u0734",
+            "\1\u0735",
+            "\1\u0736",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0738",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u073a",
+            "\1\u073b",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u073d",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u073f",
+            "\1\u0740",
+            "\1\u0741",
+            "\1\u0742",
+            "\1\u0743",
+            "",
+            "\1\u0744",
+            "\1\u0745",
+            "\1\u0746",
+            "\1\u0747",
+            "\1\u0748",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u074a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u074c",
+            "\1\u074d",
+            "\1\u074e",
+            "\1\u074f",
+            "\1\u0750",
+            "\1\u0751",
+            "\1\u0752",
+            "",
+            "\1\u0753",
+            "",
+            "\1\u0754",
+            "\1\u0755",
+            "",
+            "\1\u0756",
+            "",
+            "\1\u0757",
+            "\1\u0758",
+            "\1\u0759",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u075b",
+            "\1\u075c",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u075e",
+            "\1\u075f",
+            "\1\u0760",
+            "",
+            "\1\u0761",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0763",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0765",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0767",
+            "\1\u0768",
+            "\1\u0769",
+            "\1\u076a",
+            "\1\u076b",
+            "\1\u076c",
+            "\1\u076d",
+            "\1\u076e",
+            "\1\u076f",
+            "",
+            "\1\u0770",
+            "\1\u0771",
+            "",
+            "\1\u0772",
+            "\1\u0773",
+            "\1\u0774",
+            "\1\u0775",
+            "",
+            "\1\u0776",
+            "",
+            "\1\u0777",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0779",
+            "\1\u077a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u077c",
+            "\1\u077d",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u077f",
+            "\1\u0780",
+            "\1\u0781",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0784",
+            "\1\u0785",
+            "\1\u0786",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u0788",
+            "",
+            "\1\u0789",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u078b",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u078d",
+            "\1\u078e",
+            "\1\u078f",
+            "",
+            "",
+            "\1\u0790",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u0793",
+            "\1\u0794",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u0796",
+            "\1\u0797",
+            "\1\u0798",
+            "\1\u0799",
+            "",
+            "",
+            "\1\u079a",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "\1\u079c",
+            "\1\u079d",
+            "\1\u079e",
+            "\1\u079f",
+            "\1\u07a0",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "\1\u07a4",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            "",
+            "",
+            "",
+            "\1\u07a6",
+            "",
+            "\12\60\7\uffff\32\60\4\uffff\1\60\1\uffff\32\60",
+            ""
+    };
+
+    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 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | 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_42 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_42>='\u0000' && LA12_42<='\uFFFF')) ) {s = 127;}
+
+                        else s = 46;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_43 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_43>='\u0000' && LA12_43<='\uFFFF')) ) {s = 127;}
+
+                        else s = 46;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0=='R') ) {s = 1;}
+
+                        else if ( (LA12_0=='{') ) {s = 2;}
+
+                        else if ( (LA12_0=='n') ) {s = 3;}
+
+                        else if ( (LA12_0=='d') ) {s = 4;}
+
+                        else if ( (LA12_0==',') ) {s = 5;}
+
+                        else if ( (LA12_0=='}') ) {s = 6;}
+
+                        else if ( (LA12_0=='i') ) {s = 7;}
+
+                        else if ( (LA12_0=='c') ) {s = 8;}
+
+                        else if ( (LA12_0=='I') ) {s = 9;}
+
+                        else if ( (LA12_0=='p') ) {s = 10;}
+
+                        else if ( (LA12_0=='(') ) {s = 11;}
+
+                        else if ( (LA12_0==')') ) {s = 12;}
+
+                        else if ( (LA12_0=='s') ) {s = 13;}
+
+                        else if ( (LA12_0=='r') ) {s = 14;}
+
+                        else if ( (LA12_0=='b') ) {s = 15;}
+
+                        else if ( (LA12_0=='C') ) {s = 16;}
+
+                        else if ( (LA12_0=='P') ) {s = 17;}
+
+                        else if ( (LA12_0=='t') ) {s = 18;}
+
+                        else if ( (LA12_0=='S') ) {s = 19;}
+
+                        else if ( (LA12_0=='m') ) {s = 20;}
+
+                        else if ( (LA12_0=='B') ) {s = 21;}
+
+                        else if ( (LA12_0=='e') ) {s = 22;}
+
+                        else if ( (LA12_0=='f') ) {s = 23;}
+
+                        else if ( (LA12_0=='a') ) {s = 24;}
+
+                        else if ( (LA12_0=='E') ) {s = 25;}
+
+                        else if ( (LA12_0=='F') ) {s = 26;}
+
+                        else if ( (LA12_0=='A') ) {s = 27;}
+
+                        else if ( (LA12_0=='w') ) {s = 28;}
+
+                        else if ( (LA12_0=='L') ) {s = 29;}
+
+                        else if ( (LA12_0=='l') ) {s = 30;}
+
+                        else if ( (LA12_0=='-') ) {s = 31;}
+
+                        else if ( (LA12_0=='N') ) {s = 32;}
+
+                        else if ( (LA12_0=='v') ) {s = 33;}
+
+                        else if ( (LA12_0=='.') ) {s = 34;}
+
+                        else if ( (LA12_0=='o') ) {s = 35;}
+
+                        else if ( (LA12_0=='D') ) {s = 36;}
+
+                        else if ( (LA12_0=='O') ) {s = 37;}
+
+                        else if ( (LA12_0=='V') ) {s = 38;}
+
+                        else if ( (LA12_0=='^') ) {s = 39;}
+
+                        else if ( ((LA12_0>='G' && LA12_0<='H')||(LA12_0>='J' && LA12_0<='K')||LA12_0=='M'||LA12_0=='Q'||(LA12_0>='T' && LA12_0<='U')||(LA12_0>='W' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='g' && LA12_0<='h')||(LA12_0>='j' && LA12_0<='k')||LA12_0=='q'||LA12_0=='u'||(LA12_0>='x' && LA12_0<='z')) ) {s = 40;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 41;}
+
+                        else if ( (LA12_0=='\"') ) {s = 42;}
+
+                        else if ( (LA12_0=='\'') ) {s = 43;}
+
+                        else if ( (LA12_0=='/') ) {s = 44;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 45;}
+
+                        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 = 46;}
+
+                        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/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSLParser.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSLParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..27a16d89dc95561cd0971350cb2e9ba878633493
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSLParser.java
@@ -0,0 +1,21019 @@
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.parser.antlr.internal; 
+
+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.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services.RepositoryDSLGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRepositoryDSLParser extends AbstractInternalAntlrParser {
+    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", "'Repository'", "'{'", "'name'", "'datatypes'", "','", "'}'", "'interfaces'", "'components'", "'Interface'", "'parentInterfaces'", "'('", "')'", "'signatures'", "'RepositoryComponent'", "'relationship'", "'providedRoles'", "'blackBoxBehavior'", "'requiredRoles'", "'coarseGrainedBehavior'", "'CollectionDataType'", "'innerType'", "'CompositeDataType'", "'parentTypes'", "'innerDeclarations'", "'PrimitiveDataType'", "'type'", "'InnerDeclaration'", "'dataType'", "'Signature'", "'returnType'", "'parameters'", "'Parameter'", "'modifier'", "'ProvidedRole'", "'interface'", "'BlackBoxBehavior'", "'describedSignature'", "'describedEntity'", "'influencingParameter'", "'responseTimeSpecification'", "'RequiredRole'", "'CoarseGrainedBehavior'", "'externalCallFrequency'", "'resourceDemandSpecification'", "'BasicComponent'", "'passiveResources'", "'fineGrainedBehavior'", "'CompositeComponent'", "'assemblyContexts'", "'assemblyConnectors'", "'providedDelegationConnectors'", "'requiredDelegationConnectors'", "'SubSystem'", "'InfluencingParameter'", "'description'", "'behavior'", "'scope'", "'ResponseTimeSpecification'", "'Scope'", "'interfaceProvidingRequiringEntity'", "'ServiceInputParameter'", "'characterization'", "'signature'", "'parameter'", "'providedRole'", "'ExternalCallReturnParameter'", "'externalCall'", "'ExternalCallParameter'", "'externallCall'", "'FineGrainedBehavior'", "'basicComponent'", "'actions'", "'AbstractAction'", "'predecessor'", "'successor'", "'ComponentInternalBehavior'", "'StartAction'", "'StopAction'", "'AcquireAction'", "'passiveResource'", "'ReleaseAction'", "'InternalAction'", "'withSynchronizationBarrier'", "'ForkAction'", "'forkedBehaviors'", "'BranchAction'", "'branches'", "'branchProbabilities'", "'LoopAction'", "'loopBodyBehavior'", "'loopIterationCountDistribution'", "'ExternalCallAction'", "'requiredRole'", "'PassiveResourceSpecification'", "'passiveResourceType'", "'capacity'", "'PassiveResourceCapacity'", "'-'", "'ResourceDemandSpecification'", "'processingResourceType'", "'ProcessingResourceType'", "'CommunicationLinkResourceType'", "'BranchTransition'", "'branchBehavior'", "'BranchProbabilities'", "'probabilities'", "'ProbabilityMassFunction'", "'sample'", "'ProbabilityDensityFunction'", "'BoxedPDF'", "'ContinuousPDF'", "'NormalDistribution'", "'mu'", "'sigma'", "'ExponentialDistribution'", "'rate'", "'Sample'", "'probability'", "'value'", "'.'", "'ContinuousSample'", "'LoopIterationCountDistribution'", "'AssemblyContext'", "'encapsulatedComponent'", "'AssemblyConnector'", "'providingAssemblyContext'", "'requiringAssemblyContext'", "'ProvidedDelegationConnector'", "'assemblyContext'", "'innerProvidedRole'", "'outerProvidedRole'", "'RequiredDelegationConnector'", "'innerRequiredRole'", "'outerRequiredRole'", "'ExternalCall'", "'ExternalCallFrequency'", "'frequency'", "'CallFrequency'", "'DependencyRelationship'", "'surroundingEntity'", "'influencedVariable'", "'CorrelationRelationship'", "'leftInfluencingParameter'", "'rightInfluencingParameter'", "'leftComponentInstanceReference'", "'rightComponentInstanceReference'", "'ComponentInstanceReference'", "'assemblies'", "'INT'", "'STRING'", "'BOOL'", "'DOUBLE'", "'CHAR'", "'BYTE'", "'LONG'", "'NONE'", "'IN'", "'OUT'", "'INOUT'", "'VALUE'", "'NUMBER_OF_ELEMENTS'"
+    };
+    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 T__167=167;
+    public static final int T__168=168;
+    public static final int EOF=-1;
+    public static final int T__165=165;
+    public static final int T__166=166;
+    public static final int T__163=163;
+    public static final int T__164=164;
+    public static final int T__161=161;
+    public static final int T__162=162;
+    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 T__171=171;
+    public static final int T__170=170;
+    public static final int RULE_WS=9;
+    public static final int T__169=169;
+
+    // delegates
+    // delegators
+
+
+        public InternalRepositoryDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalRepositoryDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalRepositoryDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g"; }
+
+
+
+     	private RepositoryDSLGrammarAccess grammarAccess;
+     	
+        public InternalRepositoryDSLParser(TokenStream input, RepositoryDSLGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "Repository";	
+       	}
+       	
+       	@Override
+       	protected RepositoryDSLGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleRepository"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:68:1: entryRuleRepository returns [EObject current=null] : iv_ruleRepository= ruleRepository EOF ;
+    public final EObject entryRuleRepository() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRepository = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:69:2: (iv_ruleRepository= ruleRepository EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:70:2: iv_ruleRepository= ruleRepository EOF
+            {
+             newCompositeNode(grammarAccess.getRepositoryRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRepository_in_entryRuleRepository75);
+            iv_ruleRepository=ruleRepository();
+
+            state._fsp--;
+
+             current =iv_ruleRepository; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRepository85); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRepository"
+
+
+    // $ANTLR start "ruleRepository"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:77:1: ruleRepository returns [EObject current=null] : (otherlv_0= 'Repository' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'datatypes' otherlv_6= '{' ( (lv_datatypes_7_0= ruleDataType ) ) (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )* otherlv_10= '}' )? (otherlv_11= 'interfaces' otherlv_12= '{' ( (lv_interfaces_13_0= ruleInterface ) ) (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )* otherlv_16= '}' )? (otherlv_17= 'components' otherlv_18= '{' ( (lv_components_19_0= ruleRepositoryComponent ) ) (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) ;
+    public final EObject ruleRepository() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_datatypes_7_0 = null;
+
+        EObject lv_datatypes_9_0 = null;
+
+        EObject lv_interfaces_13_0 = null;
+
+        EObject lv_interfaces_15_0 = null;
+
+        EObject lv_components_19_0 = null;
+
+        EObject lv_components_21_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:80:28: ( (otherlv_0= 'Repository' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'datatypes' otherlv_6= '{' ( (lv_datatypes_7_0= ruleDataType ) ) (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )* otherlv_10= '}' )? (otherlv_11= 'interfaces' otherlv_12= '{' ( (lv_interfaces_13_0= ruleInterface ) ) (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )* otherlv_16= '}' )? (otherlv_17= 'components' otherlv_18= '{' ( (lv_components_19_0= ruleRepositoryComponent ) ) (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:81:1: (otherlv_0= 'Repository' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'datatypes' otherlv_6= '{' ( (lv_datatypes_7_0= ruleDataType ) ) (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )* otherlv_10= '}' )? (otherlv_11= 'interfaces' otherlv_12= '{' ( (lv_interfaces_13_0= ruleInterface ) ) (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )* otherlv_16= '}' )? (otherlv_17= 'components' otherlv_18= '{' ( (lv_components_19_0= ruleRepositoryComponent ) ) (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:81:1: (otherlv_0= 'Repository' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'datatypes' otherlv_6= '{' ( (lv_datatypes_7_0= ruleDataType ) ) (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )* otherlv_10= '}' )? (otherlv_11= 'interfaces' otherlv_12= '{' ( (lv_interfaces_13_0= ruleInterface ) ) (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )* otherlv_16= '}' )? (otherlv_17= 'components' otherlv_18= '{' ( (lv_components_19_0= ruleRepositoryComponent ) ) (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:81:3: otherlv_0= 'Repository' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'datatypes' otherlv_6= '{' ( (lv_datatypes_7_0= ruleDataType ) ) (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )* otherlv_10= '}' )? (otherlv_11= 'interfaces' otherlv_12= '{' ( (lv_interfaces_13_0= ruleInterface ) ) (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )* otherlv_16= '}' )? (otherlv_17= 'components' otherlv_18= '{' ( (lv_components_19_0= ruleRepositoryComponent ) ) (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )* otherlv_22= '}' )? otherlv_23= '}'
+            {
+            otherlv_0=(Token)match(input,11,FollowSets000.FOLLOW_11_in_ruleRepository122); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getRepositoryAccess().getRepositoryKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:85:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:86:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:86:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:87:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRepositoryAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRepository143);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepository155); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleRepository167); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getRepositoryAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:111:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:112:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:112:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:113:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRepositoryAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRepository188);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:129:2: (otherlv_5= 'datatypes' otherlv_6= '{' ( (lv_datatypes_7_0= ruleDataType ) ) (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )* otherlv_10= '}' )?
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==14) ) {
+                alt2=1;
+            }
+            switch (alt2) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:129:4: otherlv_5= 'datatypes' otherlv_6= '{' ( (lv_datatypes_7_0= ruleDataType ) ) (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )* otherlv_10= '}'
+                    {
+                    otherlv_5=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleRepository201); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getRepositoryAccess().getDatatypesKeyword_5_0());
+                        
+                    otherlv_6=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepository213); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:137:1: ( (lv_datatypes_7_0= ruleDataType ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:138:1: (lv_datatypes_7_0= ruleDataType )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:138:1: (lv_datatypes_7_0= ruleDataType )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:139:3: lv_datatypes_7_0= ruleDataType
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryAccess().getDatatypesDataTypeParserRuleCall_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleDataType_in_ruleRepository234);
+                    lv_datatypes_7_0=ruleDataType();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"datatypes",
+                            		lv_datatypes_7_0, 
+                            		"DataType");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:155:2: (otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) ) )*
+                    loop1:
+                    do {
+                        int alt1=2;
+                        int LA1_0 = input.LA(1);
+
+                        if ( (LA1_0==15) ) {
+                            alt1=1;
+                        }
+
+
+                        switch (alt1) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:155:4: otherlv_8= ',' ( (lv_datatypes_9_0= ruleDataType ) )
+                    	    {
+                    	    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepository247); 
+
+                    	        	newLeafNode(otherlv_8, grammarAccess.getRepositoryAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:159:1: ( (lv_datatypes_9_0= ruleDataType ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:160:1: (lv_datatypes_9_0= ruleDataType )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:160:1: (lv_datatypes_9_0= ruleDataType )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:161:3: lv_datatypes_9_0= ruleDataType
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryAccess().getDatatypesDataTypeParserRuleCall_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDataType_in_ruleRepository268);
+                    	    lv_datatypes_9_0=ruleDataType();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"datatypes",
+                    	            		lv_datatypes_9_0, 
+                    	            		"DataType");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop1;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepository282); 
+
+                        	newLeafNode(otherlv_10, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:181:3: (otherlv_11= 'interfaces' otherlv_12= '{' ( (lv_interfaces_13_0= ruleInterface ) ) (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )* otherlv_16= '}' )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==17) ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:181:5: otherlv_11= 'interfaces' otherlv_12= '{' ( (lv_interfaces_13_0= ruleInterface ) ) (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )* otherlv_16= '}'
+                    {
+                    otherlv_11=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleRepository297); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getRepositoryAccess().getInterfacesKeyword_6_0());
+                        
+                    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepository309); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:189:1: ( (lv_interfaces_13_0= ruleInterface ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:190:1: (lv_interfaces_13_0= ruleInterface )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:190:1: (lv_interfaces_13_0= ruleInterface )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:191:3: lv_interfaces_13_0= ruleInterface
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryAccess().getInterfacesInterfaceParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleInterface_in_ruleRepository330);
+                    lv_interfaces_13_0=ruleInterface();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"interfaces",
+                            		lv_interfaces_13_0, 
+                            		"Interface");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:207:2: (otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) ) )*
+                    loop3:
+                    do {
+                        int alt3=2;
+                        int LA3_0 = input.LA(1);
+
+                        if ( (LA3_0==15) ) {
+                            alt3=1;
+                        }
+
+
+                        switch (alt3) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:207:4: otherlv_14= ',' ( (lv_interfaces_15_0= ruleInterface ) )
+                    	    {
+                    	    otherlv_14=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepository343); 
+
+                    	        	newLeafNode(otherlv_14, grammarAccess.getRepositoryAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:211:1: ( (lv_interfaces_15_0= ruleInterface ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:212:1: (lv_interfaces_15_0= ruleInterface )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:212:1: (lv_interfaces_15_0= ruleInterface )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:213:3: lv_interfaces_15_0= ruleInterface
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryAccess().getInterfacesInterfaceParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleInterface_in_ruleRepository364);
+                    	    lv_interfaces_15_0=ruleInterface();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"interfaces",
+                    	            		lv_interfaces_15_0, 
+                    	            		"Interface");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop3;
+                        }
+                    } while (true);
+
+                    otherlv_16=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepository378); 
+
+                        	newLeafNode(otherlv_16, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:233:3: (otherlv_17= 'components' otherlv_18= '{' ( (lv_components_19_0= ruleRepositoryComponent ) ) (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )* otherlv_22= '}' )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==18) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:233:5: otherlv_17= 'components' otherlv_18= '{' ( (lv_components_19_0= ruleRepositoryComponent ) ) (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleRepository393); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getRepositoryAccess().getComponentsKeyword_7_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepository405); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getRepositoryAccess().getLeftCurlyBracketKeyword_7_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:241:1: ( (lv_components_19_0= ruleRepositoryComponent ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:242:1: (lv_components_19_0= ruleRepositoryComponent )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:242:1: (lv_components_19_0= ruleRepositoryComponent )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:243:3: lv_components_19_0= ruleRepositoryComponent
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryAccess().getComponentsRepositoryComponentParserRuleCall_7_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleRepositoryComponent_in_ruleRepository426);
+                    lv_components_19_0=ruleRepositoryComponent();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"components",
+                            		lv_components_19_0, 
+                            		"RepositoryComponent");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:259:2: (otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) ) )*
+                    loop5:
+                    do {
+                        int alt5=2;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0==15) ) {
+                            alt5=1;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:259:4: otherlv_20= ',' ( (lv_components_21_0= ruleRepositoryComponent ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepository439); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getRepositoryAccess().getCommaKeyword_7_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:263:1: ( (lv_components_21_0= ruleRepositoryComponent ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:264:1: (lv_components_21_0= ruleRepositoryComponent )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:264:1: (lv_components_21_0= ruleRepositoryComponent )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:265:3: lv_components_21_0= ruleRepositoryComponent
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryAccess().getComponentsRepositoryComponentParserRuleCall_7_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleRepositoryComponent_in_ruleRepository460);
+                    	    lv_components_21_0=ruleRepositoryComponent();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getRepositoryRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"components",
+                    	            		lv_components_21_0, 
+                    	            		"RepositoryComponent");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepository474); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_7_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_23=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepository488); 
+
+                	newLeafNode(otherlv_23, grammarAccess.getRepositoryAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRepository"
+
+
+    // $ANTLR start "entryRuleDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:297:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
+    public final EObject entryRuleDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataType = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:298:2: (iv_ruleDataType= ruleDataType EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:299:2: iv_ruleDataType= ruleDataType EOF
+            {
+             newCompositeNode(grammarAccess.getDataTypeRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDataType_in_entryRuleDataType524);
+            iv_ruleDataType=ruleDataType();
+
+            state._fsp--;
+
+             current =iv_ruleDataType; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataType534); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataType"
+
+
+    // $ANTLR start "ruleDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:306:1: ruleDataType returns [EObject current=null] : (this_CollectionDataType_0= ruleCollectionDataType | this_CompositeDataType_1= ruleCompositeDataType | this_PrimitiveDataType_2= rulePrimitiveDataType ) ;
+    public final EObject ruleDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_CollectionDataType_0 = null;
+
+        EObject this_CompositeDataType_1 = null;
+
+        EObject this_PrimitiveDataType_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:309:28: ( (this_CollectionDataType_0= ruleCollectionDataType | this_CompositeDataType_1= ruleCompositeDataType | this_PrimitiveDataType_2= rulePrimitiveDataType ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:310:1: (this_CollectionDataType_0= ruleCollectionDataType | this_CompositeDataType_1= ruleCompositeDataType | this_PrimitiveDataType_2= rulePrimitiveDataType )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:310:1: (this_CollectionDataType_0= ruleCollectionDataType | this_CompositeDataType_1= ruleCompositeDataType | this_PrimitiveDataType_2= rulePrimitiveDataType )
+            int alt7=3;
+            switch ( input.LA(1) ) {
+            case 30:
+                {
+                alt7=1;
+                }
+                break;
+            case 32:
+                {
+                alt7=2;
+                }
+                break;
+            case 35:
+                {
+                alt7=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:311:5: this_CollectionDataType_0= ruleCollectionDataType
+                    {
+                     
+                            newCompositeNode(grammarAccess.getDataTypeAccess().getCollectionDataTypeParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleCollectionDataType_in_ruleDataType581);
+                    this_CollectionDataType_0=ruleCollectionDataType();
+
+                    state._fsp--;
+
+                     
+                            current = this_CollectionDataType_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:321:5: this_CompositeDataType_1= ruleCompositeDataType
+                    {
+                     
+                            newCompositeNode(grammarAccess.getDataTypeAccess().getCompositeDataTypeParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleCompositeDataType_in_ruleDataType608);
+                    this_CompositeDataType_1=ruleCompositeDataType();
+
+                    state._fsp--;
+
+                     
+                            current = this_CompositeDataType_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:331:5: this_PrimitiveDataType_2= rulePrimitiveDataType
+                    {
+                     
+                            newCompositeNode(grammarAccess.getDataTypeAccess().getPrimitiveDataTypeParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_rulePrimitiveDataType_in_ruleDataType635);
+                    this_PrimitiveDataType_2=rulePrimitiveDataType();
+
+                    state._fsp--;
+
+                     
+                            current = this_PrimitiveDataType_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataType"
+
+
+    // $ANTLR start "entryRuleRepositoryComponent"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:347:1: entryRuleRepositoryComponent returns [EObject current=null] : iv_ruleRepositoryComponent= ruleRepositoryComponent EOF ;
+    public final EObject entryRuleRepositoryComponent() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRepositoryComponent = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:348:2: (iv_ruleRepositoryComponent= ruleRepositoryComponent EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:349:2: iv_ruleRepositoryComponent= ruleRepositoryComponent EOF
+            {
+             newCompositeNode(grammarAccess.getRepositoryComponentRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRepositoryComponent_in_entryRuleRepositoryComponent670);
+            iv_ruleRepositoryComponent=ruleRepositoryComponent();
+
+            state._fsp--;
+
+             current =iv_ruleRepositoryComponent; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRepositoryComponent680); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRepositoryComponent"
+
+
+    // $ANTLR start "ruleRepositoryComponent"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:356:1: ruleRepositoryComponent returns [EObject current=null] : (this_RepositoryComponent_Impl_0= ruleRepositoryComponent_Impl | this_BasicComponent_1= ruleBasicComponent | this_CompositeComponent_2= ruleCompositeComponent | this_SubSystem_3= ruleSubSystem ) ;
+    public final EObject ruleRepositoryComponent() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_RepositoryComponent_Impl_0 = null;
+
+        EObject this_BasicComponent_1 = null;
+
+        EObject this_CompositeComponent_2 = null;
+
+        EObject this_SubSystem_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:359:28: ( (this_RepositoryComponent_Impl_0= ruleRepositoryComponent_Impl | this_BasicComponent_1= ruleBasicComponent | this_CompositeComponent_2= ruleCompositeComponent | this_SubSystem_3= ruleSubSystem ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:360:1: (this_RepositoryComponent_Impl_0= ruleRepositoryComponent_Impl | this_BasicComponent_1= ruleBasicComponent | this_CompositeComponent_2= ruleCompositeComponent | this_SubSystem_3= ruleSubSystem )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:360:1: (this_RepositoryComponent_Impl_0= ruleRepositoryComponent_Impl | this_BasicComponent_1= ruleBasicComponent | this_CompositeComponent_2= ruleCompositeComponent | this_SubSystem_3= ruleSubSystem )
+            int alt8=4;
+            switch ( input.LA(1) ) {
+            case 24:
+                {
+                alt8=1;
+                }
+                break;
+            case 55:
+                {
+                alt8=2;
+                }
+                break;
+            case 58:
+                {
+                alt8=3;
+                }
+                break;
+            case 63:
+                {
+                alt8=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:361:5: this_RepositoryComponent_Impl_0= ruleRepositoryComponent_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getRepositoryComponentAccess().getRepositoryComponent_ImplParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleRepositoryComponent_Impl_in_ruleRepositoryComponent727);
+                    this_RepositoryComponent_Impl_0=ruleRepositoryComponent_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_RepositoryComponent_Impl_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:371:5: this_BasicComponent_1= ruleBasicComponent
+                    {
+                     
+                            newCompositeNode(grammarAccess.getRepositoryComponentAccess().getBasicComponentParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBasicComponent_in_ruleRepositoryComponent754);
+                    this_BasicComponent_1=ruleBasicComponent();
+
+                    state._fsp--;
+
+                     
+                            current = this_BasicComponent_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:381:5: this_CompositeComponent_2= ruleCompositeComponent
+                    {
+                     
+                            newCompositeNode(grammarAccess.getRepositoryComponentAccess().getCompositeComponentParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleCompositeComponent_in_ruleRepositoryComponent781);
+                    this_CompositeComponent_2=ruleCompositeComponent();
+
+                    state._fsp--;
+
+                     
+                            current = this_CompositeComponent_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:391:5: this_SubSystem_3= ruleSubSystem
+                    {
+                     
+                            newCompositeNode(grammarAccess.getRepositoryComponentAccess().getSubSystemParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleSubSystem_in_ruleRepositoryComponent808);
+                    this_SubSystem_3=ruleSubSystem();
+
+                    state._fsp--;
+
+                     
+                            current = this_SubSystem_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRepositoryComponent"
+
+
+    // $ANTLR start "entryRuleInfluencingParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:409:1: entryRuleInfluencingParameter returns [EObject current=null] : iv_ruleInfluencingParameter= ruleInfluencingParameter EOF ;
+    public final EObject entryRuleInfluencingParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleInfluencingParameter = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:410:2: (iv_ruleInfluencingParameter= ruleInfluencingParameter EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:411:2: iv_ruleInfluencingParameter= ruleInfluencingParameter EOF
+            {
+             newCompositeNode(grammarAccess.getInfluencingParameterRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_in_entryRuleInfluencingParameter845);
+            iv_ruleInfluencingParameter=ruleInfluencingParameter();
+
+            state._fsp--;
+
+             current =iv_ruleInfluencingParameter; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInfluencingParameter855); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleInfluencingParameter"
+
+
+    // $ANTLR start "ruleInfluencingParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:418:1: ruleInfluencingParameter returns [EObject current=null] : (this_InfluencingParameter_Impl_0= ruleInfluencingParameter_Impl | this_ServiceInputParameter_1= ruleServiceInputParameter | this_ExternalCallReturnParameter_2= ruleExternalCallReturnParameter | this_ExternalCallParameter_3= ruleExternalCallParameter ) ;
+    public final EObject ruleInfluencingParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_InfluencingParameter_Impl_0 = null;
+
+        EObject this_ServiceInputParameter_1 = null;
+
+        EObject this_ExternalCallReturnParameter_2 = null;
+
+        EObject this_ExternalCallParameter_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:421:28: ( (this_InfluencingParameter_Impl_0= ruleInfluencingParameter_Impl | this_ServiceInputParameter_1= ruleServiceInputParameter | this_ExternalCallReturnParameter_2= ruleExternalCallReturnParameter | this_ExternalCallParameter_3= ruleExternalCallParameter ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:422:1: (this_InfluencingParameter_Impl_0= ruleInfluencingParameter_Impl | this_ServiceInputParameter_1= ruleServiceInputParameter | this_ExternalCallReturnParameter_2= ruleExternalCallReturnParameter | this_ExternalCallParameter_3= ruleExternalCallParameter )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:422:1: (this_InfluencingParameter_Impl_0= ruleInfluencingParameter_Impl | this_ServiceInputParameter_1= ruleServiceInputParameter | this_ExternalCallReturnParameter_2= ruleExternalCallReturnParameter | this_ExternalCallParameter_3= ruleExternalCallParameter )
+            int alt9=4;
+            switch ( input.LA(1) ) {
+            case 64:
+                {
+                alt9=1;
+                }
+                break;
+            case 71:
+                {
+                alt9=2;
+                }
+                break;
+            case 76:
+                {
+                alt9=3;
+                }
+                break;
+            case 78:
+                {
+                alt9=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 9, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt9) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:423:5: this_InfluencingParameter_Impl_0= ruleInfluencingParameter_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getInfluencingParameterAccess().getInfluencingParameter_ImplParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_Impl_in_ruleInfluencingParameter902);
+                    this_InfluencingParameter_Impl_0=ruleInfluencingParameter_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_InfluencingParameter_Impl_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:433:5: this_ServiceInputParameter_1= ruleServiceInputParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getInfluencingParameterAccess().getServiceInputParameterParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleServiceInputParameter_in_ruleInfluencingParameter929);
+                    this_ServiceInputParameter_1=ruleServiceInputParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_ServiceInputParameter_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:443:5: this_ExternalCallReturnParameter_2= ruleExternalCallReturnParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getInfluencingParameterAccess().getExternalCallReturnParameterParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExternalCallReturnParameter_in_ruleInfluencingParameter956);
+                    this_ExternalCallReturnParameter_2=ruleExternalCallReturnParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExternalCallReturnParameter_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:453:5: this_ExternalCallParameter_3= ruleExternalCallParameter
+                    {
+                     
+                            newCompositeNode(grammarAccess.getInfluencingParameterAccess().getExternalCallParameterParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExternalCallParameter_in_ruleInfluencingParameter983);
+                    this_ExternalCallParameter_3=ruleExternalCallParameter();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExternalCallParameter_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleInfluencingParameter"
+
+
+    // $ANTLR start "entryRuleExternalCall"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:475:1: entryRuleExternalCall returns [EObject current=null] : iv_ruleExternalCall= ruleExternalCall EOF ;
+    public final EObject entryRuleExternalCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExternalCall = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:476:2: (iv_ruleExternalCall= ruleExternalCall EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:477:2: iv_ruleExternalCall= ruleExternalCall EOF
+            {
+             newCompositeNode(grammarAccess.getExternalCallRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExternalCall_in_entryRuleExternalCall1024);
+            iv_ruleExternalCall=ruleExternalCall();
+
+            state._fsp--;
+
+             current =iv_ruleExternalCall; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExternalCall1034); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExternalCall"
+
+
+    // $ANTLR start "ruleExternalCall"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:484:1: ruleExternalCall returns [EObject current=null] : (this_ExternalCall_Impl_0= ruleExternalCall_Impl | this_ExternalCallAction_1= ruleExternalCallAction ) ;
+    public final EObject ruleExternalCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ExternalCall_Impl_0 = null;
+
+        EObject this_ExternalCallAction_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:487:28: ( (this_ExternalCall_Impl_0= ruleExternalCall_Impl | this_ExternalCallAction_1= ruleExternalCallAction ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:488:1: (this_ExternalCall_Impl_0= ruleExternalCall_Impl | this_ExternalCallAction_1= ruleExternalCallAction )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:488:1: (this_ExternalCall_Impl_0= ruleExternalCall_Impl | this_ExternalCallAction_1= ruleExternalCallAction )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==145) ) {
+                alt10=1;
+            }
+            else if ( (LA10_0==102) ) {
+                alt10=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:489:5: this_ExternalCall_Impl_0= ruleExternalCall_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExternalCallAccess().getExternalCall_ImplParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExternalCall_Impl_in_ruleExternalCall1081);
+                    this_ExternalCall_Impl_0=ruleExternalCall_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExternalCall_Impl_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:499:5: this_ExternalCallAction_1= ruleExternalCallAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getExternalCallAccess().getExternalCallActionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExternalCallAction_in_ruleExternalCall1108);
+                    this_ExternalCallAction_1=ruleExternalCallAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExternalCallAction_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExternalCall"
+
+
+    // $ANTLR start "entryRuleAbstractAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:515:1: entryRuleAbstractAction returns [EObject current=null] : iv_ruleAbstractAction= ruleAbstractAction EOF ;
+    public final EObject entryRuleAbstractAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleAbstractAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:516:2: (iv_ruleAbstractAction= ruleAbstractAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:517:2: iv_ruleAbstractAction= ruleAbstractAction EOF
+            {
+             newCompositeNode(grammarAccess.getAbstractActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_in_entryRuleAbstractAction1143);
+            iv_ruleAbstractAction=ruleAbstractAction();
+
+            state._fsp--;
+
+             current =iv_ruleAbstractAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAbstractAction1153); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleAbstractAction"
+
+
+    // $ANTLR start "ruleAbstractAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:524:1: ruleAbstractAction returns [EObject current=null] : (this_AbstractAction_Impl_0= ruleAbstractAction_Impl | this_StartAction_1= ruleStartAction | this_StopAction_2= ruleStopAction | this_AcquireAction_3= ruleAcquireAction | this_ReleaseAction_4= ruleReleaseAction | this_InternalAction_5= ruleInternalAction | this_ForkAction_6= ruleForkAction | this_BranchAction_7= ruleBranchAction | this_LoopAction_8= ruleLoopAction | this_ExternalCallAction_9= ruleExternalCallAction ) ;
+    public final EObject ruleAbstractAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_AbstractAction_Impl_0 = null;
+
+        EObject this_StartAction_1 = null;
+
+        EObject this_StopAction_2 = null;
+
+        EObject this_AcquireAction_3 = null;
+
+        EObject this_ReleaseAction_4 = null;
+
+        EObject this_InternalAction_5 = null;
+
+        EObject this_ForkAction_6 = null;
+
+        EObject this_BranchAction_7 = null;
+
+        EObject this_LoopAction_8 = null;
+
+        EObject this_ExternalCallAction_9 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:527:28: ( (this_AbstractAction_Impl_0= ruleAbstractAction_Impl | this_StartAction_1= ruleStartAction | this_StopAction_2= ruleStopAction | this_AcquireAction_3= ruleAcquireAction | this_ReleaseAction_4= ruleReleaseAction | this_InternalAction_5= ruleInternalAction | this_ForkAction_6= ruleForkAction | this_BranchAction_7= ruleBranchAction | this_LoopAction_8= ruleLoopAction | this_ExternalCallAction_9= ruleExternalCallAction ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:528:1: (this_AbstractAction_Impl_0= ruleAbstractAction_Impl | this_StartAction_1= ruleStartAction | this_StopAction_2= ruleStopAction | this_AcquireAction_3= ruleAcquireAction | this_ReleaseAction_4= ruleReleaseAction | this_InternalAction_5= ruleInternalAction | this_ForkAction_6= ruleForkAction | this_BranchAction_7= ruleBranchAction | this_LoopAction_8= ruleLoopAction | this_ExternalCallAction_9= ruleExternalCallAction )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:528:1: (this_AbstractAction_Impl_0= ruleAbstractAction_Impl | this_StartAction_1= ruleStartAction | this_StopAction_2= ruleStopAction | this_AcquireAction_3= ruleAcquireAction | this_ReleaseAction_4= ruleReleaseAction | this_InternalAction_5= ruleInternalAction | this_ForkAction_6= ruleForkAction | this_BranchAction_7= ruleBranchAction | this_LoopAction_8= ruleLoopAction | this_ExternalCallAction_9= ruleExternalCallAction )
+            int alt11=10;
+            switch ( input.LA(1) ) {
+            case 83:
+                {
+                alt11=1;
+                }
+                break;
+            case 87:
+                {
+                alt11=2;
+                }
+                break;
+            case 88:
+                {
+                alt11=3;
+                }
+                break;
+            case 89:
+                {
+                alt11=4;
+                }
+                break;
+            case 91:
+                {
+                alt11=5;
+                }
+                break;
+            case 92:
+                {
+                alt11=6;
+                }
+                break;
+            case 93:
+                {
+                alt11=7;
+                }
+                break;
+            case 96:
+                {
+                alt11=8;
+                }
+                break;
+            case 99:
+                {
+                alt11=9;
+                }
+                break;
+            case 102:
+                {
+                alt11=10;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt11) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:529:5: this_AbstractAction_Impl_0= ruleAbstractAction_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getAbstractAction_ImplParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_Impl_in_ruleAbstractAction1200);
+                    this_AbstractAction_Impl_0=ruleAbstractAction_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_AbstractAction_Impl_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:539:5: this_StartAction_1= ruleStartAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStartAction_in_ruleAbstractAction1227);
+                    this_StartAction_1=ruleStartAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_StartAction_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 3 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:549:5: this_StopAction_2= ruleStopAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_2()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleStopAction_in_ruleAbstractAction1254);
+                    this_StopAction_2=ruleStopAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_StopAction_2; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 4 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:559:5: this_AcquireAction_3= ruleAcquireAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getAcquireActionParserRuleCall_3()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleAcquireAction_in_ruleAbstractAction1281);
+                    this_AcquireAction_3=ruleAcquireAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_AcquireAction_3; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 5 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:569:5: this_ReleaseAction_4= ruleReleaseAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getReleaseActionParserRuleCall_4()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleReleaseAction_in_ruleAbstractAction1308);
+                    this_ReleaseAction_4=ruleReleaseAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ReleaseAction_4; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 6 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:579:5: this_InternalAction_5= ruleInternalAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getInternalActionParserRuleCall_5()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleInternalAction_in_ruleAbstractAction1335);
+                    this_InternalAction_5=ruleInternalAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_InternalAction_5; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 7 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:589:5: this_ForkAction_6= ruleForkAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getForkActionParserRuleCall_6()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleForkAction_in_ruleAbstractAction1362);
+                    this_ForkAction_6=ruleForkAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ForkAction_6; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 8 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:599:5: this_BranchAction_7= ruleBranchAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_7()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleBranchAction_in_ruleAbstractAction1389);
+                    this_BranchAction_7=ruleBranchAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_BranchAction_7; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 9 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:609:5: this_LoopAction_8= ruleLoopAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_8()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleLoopAction_in_ruleAbstractAction1416);
+                    this_LoopAction_8=ruleLoopAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_LoopAction_8; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 10 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:619:5: this_ExternalCallAction_9= ruleExternalCallAction
+                    {
+                     
+                            newCompositeNode(grammarAccess.getAbstractActionAccess().getExternalCallActionParserRuleCall_9()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleExternalCallAction_in_ruleAbstractAction1443);
+                    this_ExternalCallAction_9=ruleExternalCallAction();
+
+                    state._fsp--;
+
+                     
+                            current = this_ExternalCallAction_9; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleAbstractAction"
+
+
+    // $ANTLR start "entryRuleComponentInternalBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:635:1: entryRuleComponentInternalBehavior returns [EObject current=null] : iv_ruleComponentInternalBehavior= ruleComponentInternalBehavior EOF ;
+    public final EObject entryRuleComponentInternalBehavior() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleComponentInternalBehavior = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:636:2: (iv_ruleComponentInternalBehavior= ruleComponentInternalBehavior EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:637:2: iv_ruleComponentInternalBehavior= ruleComponentInternalBehavior EOF
+            {
+             newCompositeNode(grammarAccess.getComponentInternalBehaviorRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_in_entryRuleComponentInternalBehavior1478);
+            iv_ruleComponentInternalBehavior=ruleComponentInternalBehavior();
+
+            state._fsp--;
+
+             current =iv_ruleComponentInternalBehavior; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleComponentInternalBehavior1488); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleComponentInternalBehavior"
+
+
+    // $ANTLR start "ruleComponentInternalBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:644:1: ruleComponentInternalBehavior returns [EObject current=null] : (this_ComponentInternalBehavior_Impl_0= ruleComponentInternalBehavior_Impl | this_FineGrainedBehavior_1= ruleFineGrainedBehavior ) ;
+    public final EObject ruleComponentInternalBehavior() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ComponentInternalBehavior_Impl_0 = null;
+
+        EObject this_FineGrainedBehavior_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:647:28: ( (this_ComponentInternalBehavior_Impl_0= ruleComponentInternalBehavior_Impl | this_FineGrainedBehavior_1= ruleFineGrainedBehavior ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:648:1: (this_ComponentInternalBehavior_Impl_0= ruleComponentInternalBehavior_Impl | this_FineGrainedBehavior_1= ruleFineGrainedBehavior )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:648:1: (this_ComponentInternalBehavior_Impl_0= ruleComponentInternalBehavior_Impl | this_FineGrainedBehavior_1= ruleFineGrainedBehavior )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==86) ) {
+                alt12=1;
+            }
+            else if ( (LA12_0==80) ) {
+                alt12=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+            switch (alt12) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:649:5: this_ComponentInternalBehavior_Impl_0= ruleComponentInternalBehavior_Impl
+                    {
+                     
+                            newCompositeNode(grammarAccess.getComponentInternalBehaviorAccess().getComponentInternalBehavior_ImplParserRuleCall_0()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_Impl_in_ruleComponentInternalBehavior1535);
+                    this_ComponentInternalBehavior_Impl_0=ruleComponentInternalBehavior_Impl();
+
+                    state._fsp--;
+
+                     
+                            current = this_ComponentInternalBehavior_Impl_0; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:659:5: this_FineGrainedBehavior_1= ruleFineGrainedBehavior
+                    {
+                     
+                            newCompositeNode(grammarAccess.getComponentInternalBehaviorAccess().getFineGrainedBehaviorParserRuleCall_1()); 
+                        
+                    pushFollow(FollowSets000.FOLLOW_ruleFineGrainedBehavior_in_ruleComponentInternalBehavior1562);
+                    this_FineGrainedBehavior_1=ruleFineGrainedBehavior();
+
+                    state._fsp--;
+
+                     
+                            current = this_FineGrainedBehavior_1; 
+                            afterParserOrEnumRuleCall();
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleComponentInternalBehavior"
+
+
+    // $ANTLR start "entryRuleEString"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:679:1: entryRuleEString returns [String current=null] : iv_ruleEString= ruleEString EOF ;
+    public final String entryRuleEString() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleEString = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:680:2: (iv_ruleEString= ruleEString EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:681:2: iv_ruleEString= ruleEString EOF
+            {
+             newCompositeNode(grammarAccess.getEStringRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_entryRuleEString1602);
+            iv_ruleEString=ruleEString();
+
+            state._fsp--;
+
+             current =iv_ruleEString.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEString1613); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEString"
+
+
+    // $ANTLR start "ruleEString"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:688:1: ruleEString returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) ;
+    public final AntlrDatatypeRuleToken ruleEString() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_STRING_0=null;
+        Token this_ID_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:691:28: ( (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:692:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:692:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==RULE_STRING) ) {
+                alt13=1;
+            }
+            else if ( (LA13_0==RULE_ID) ) {
+                alt13=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 13, 0, input);
+
+                throw nvae;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:692:6: this_STRING_0= RULE_STRING
+                    {
+                    this_STRING_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleEString1653); 
+
+                    		current.merge(this_STRING_0);
+                        
+                     
+                        newLeafNode(this_STRING_0, grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+                        
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:700:10: this_ID_1= RULE_ID
+                    {
+                    this_ID_1=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleEString1679); 
+
+                    		current.merge(this_ID_1);
+                        
+                     
+                        newLeafNode(this_ID_1, grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEString"
+
+
+    // $ANTLR start "entryRuleInterface"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:715:1: entryRuleInterface returns [EObject current=null] : iv_ruleInterface= ruleInterface EOF ;
+    public final EObject entryRuleInterface() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleInterface = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:716:2: (iv_ruleInterface= ruleInterface EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:717:2: iv_ruleInterface= ruleInterface EOF
+            {
+             newCompositeNode(grammarAccess.getInterfaceRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleInterface_in_entryRuleInterface1724);
+            iv_ruleInterface=ruleInterface();
+
+            state._fsp--;
+
+             current =iv_ruleInterface; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInterface1734); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleInterface"
+
+
+    // $ANTLR start "ruleInterface"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:724:1: ruleInterface returns [EObject current=null] : (otherlv_0= 'Interface' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentInterfaces' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'signatures' otherlv_12= '{' ( (lv_signatures_13_0= ruleSignature ) ) (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )* otherlv_16= '}' )? otherlv_17= '}' ) ;
+    public final EObject ruleInterface() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_signatures_13_0 = null;
+
+        EObject lv_signatures_15_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:727:28: ( (otherlv_0= 'Interface' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentInterfaces' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'signatures' otherlv_12= '{' ( (lv_signatures_13_0= ruleSignature ) ) (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )* otherlv_16= '}' )? otherlv_17= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:728:1: (otherlv_0= 'Interface' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentInterfaces' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'signatures' otherlv_12= '{' ( (lv_signatures_13_0= ruleSignature ) ) (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )* otherlv_16= '}' )? otherlv_17= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:728:1: (otherlv_0= 'Interface' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentInterfaces' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'signatures' otherlv_12= '{' ( (lv_signatures_13_0= ruleSignature ) ) (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )* otherlv_16= '}' )? otherlv_17= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:728:3: otherlv_0= 'Interface' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentInterfaces' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'signatures' otherlv_12= '{' ( (lv_signatures_13_0= ruleSignature ) ) (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )* otherlv_16= '}' )? otherlv_17= '}'
+            {
+            otherlv_0=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleInterface1771); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getInterfaceAccess().getInterfaceKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:732:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:733:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:733:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:734:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getInterfaceAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInterface1792);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getInterfaceRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleInterface1804); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getInterfaceAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleInterface1816); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getInterfaceAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:758:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:759:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:759:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:760:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getInterfaceAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInterface1837);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getInterfaceRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:776:2: (otherlv_5= 'parentInterfaces' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==20) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:776:4: otherlv_5= 'parentInterfaces' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')'
+                    {
+                    otherlv_5=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleInterface1850); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getInterfaceAccess().getParentInterfacesKeyword_5_0());
+                        
+                    otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleInterface1862); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getInterfaceAccess().getLeftParenthesisKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:784:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:785:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:785:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:786:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getInterfaceRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInterface1885);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:799:2: (otherlv_8= ',' ( ( ruleEString ) ) )*
+                    loop14:
+                    do {
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
+
+                        if ( (LA14_0==15) ) {
+                            alt14=1;
+                        }
+
+
+                        switch (alt14) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:799:4: otherlv_8= ',' ( ( ruleEString ) )
+                    	    {
+                    	    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleInterface1898); 
+
+                    	        	newLeafNode(otherlv_8, grammarAccess.getInterfaceAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:803:1: ( ( ruleEString ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:804:1: ( ruleEString )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:804:1: ( ruleEString )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:805:3: ruleEString
+                    	    {
+
+                    	    			if (current==null) {
+                    	    	            current = createModelElement(grammarAccess.getInterfaceRule());
+                    	    	        }
+                    	            
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getInterfaceAccess().getParentInterfacesInterfaceCrossReference_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInterface1921);
+                    	    ruleEString();
+
+                    	    state._fsp--;
+
+                    	     
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop14;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleInterface1935); 
+
+                        	newLeafNode(otherlv_10, grammarAccess.getInterfaceAccess().getRightParenthesisKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:822:3: (otherlv_11= 'signatures' otherlv_12= '{' ( (lv_signatures_13_0= ruleSignature ) ) (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )* otherlv_16= '}' )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==23) ) {
+                alt17=1;
+            }
+            switch (alt17) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:822:5: otherlv_11= 'signatures' otherlv_12= '{' ( (lv_signatures_13_0= ruleSignature ) ) (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )* otherlv_16= '}'
+                    {
+                    otherlv_11=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleInterface1950); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getInterfaceAccess().getSignaturesKeyword_6_0());
+                        
+                    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleInterface1962); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getInterfaceAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:830:1: ( (lv_signatures_13_0= ruleSignature ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:831:1: (lv_signatures_13_0= ruleSignature )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:831:1: (lv_signatures_13_0= ruleSignature )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:832:3: lv_signatures_13_0= ruleSignature
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getInterfaceAccess().getSignaturesSignatureParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleSignature_in_ruleInterface1983);
+                    lv_signatures_13_0=ruleSignature();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getInterfaceRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"signatures",
+                            		lv_signatures_13_0, 
+                            		"Signature");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:848:2: (otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) ) )*
+                    loop16:
+                    do {
+                        int alt16=2;
+                        int LA16_0 = input.LA(1);
+
+                        if ( (LA16_0==15) ) {
+                            alt16=1;
+                        }
+
+
+                        switch (alt16) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:848:4: otherlv_14= ',' ( (lv_signatures_15_0= ruleSignature ) )
+                    	    {
+                    	    otherlv_14=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleInterface1996); 
+
+                    	        	newLeafNode(otherlv_14, grammarAccess.getInterfaceAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:852:1: ( (lv_signatures_15_0= ruleSignature ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:853:1: (lv_signatures_15_0= ruleSignature )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:853:1: (lv_signatures_15_0= ruleSignature )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:854:3: lv_signatures_15_0= ruleSignature
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getInterfaceAccess().getSignaturesSignatureParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleSignature_in_ruleInterface2017);
+                    	    lv_signatures_15_0=ruleSignature();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getInterfaceRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"signatures",
+                    	            		lv_signatures_15_0, 
+                    	            		"Signature");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop16;
+                        }
+                    } while (true);
+
+                    otherlv_16=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleInterface2031); 
+
+                        	newLeafNode(otherlv_16, grammarAccess.getInterfaceAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_17=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleInterface2045); 
+
+                	newLeafNode(otherlv_17, grammarAccess.getInterfaceAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleInterface"
+
+
+    // $ANTLR start "entryRuleRepositoryComponent_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:886:1: entryRuleRepositoryComponent_Impl returns [EObject current=null] : iv_ruleRepositoryComponent_Impl= ruleRepositoryComponent_Impl EOF ;
+    public final EObject entryRuleRepositoryComponent_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRepositoryComponent_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:887:2: (iv_ruleRepositoryComponent_Impl= ruleRepositoryComponent_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:888:2: iv_ruleRepositoryComponent_Impl= ruleRepositoryComponent_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getRepositoryComponent_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRepositoryComponent_Impl_in_entryRuleRepositoryComponent_Impl2081);
+            iv_ruleRepositoryComponent_Impl=ruleRepositoryComponent_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleRepositoryComponent_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRepositoryComponent_Impl2091); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRepositoryComponent_Impl"
+
+
+    // $ANTLR start "ruleRepositoryComponent_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:895:1: ruleRepositoryComponent_Impl returns [EObject current=null] : (otherlv_0= 'RepositoryComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? otherlv_35= '}' ) ;
+    public final EObject ruleRepositoryComponent_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        Token otherlv_30=null;
+        Token otherlv_32=null;
+        Token otherlv_34=null;
+        Token otherlv_35=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_providedRoles_13_0 = null;
+
+        EObject lv_providedRoles_15_0 = null;
+
+        EObject lv_blackBoxBehavior_19_0 = null;
+
+        EObject lv_blackBoxBehavior_21_0 = null;
+
+        EObject lv_requiredRoles_25_0 = null;
+
+        EObject lv_requiredRoles_27_0 = null;
+
+        EObject lv_coarseGrainedBehavior_31_0 = null;
+
+        EObject lv_coarseGrainedBehavior_33_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:898:28: ( (otherlv_0= 'RepositoryComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? otherlv_35= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:899:1: (otherlv_0= 'RepositoryComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? otherlv_35= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:899:1: (otherlv_0= 'RepositoryComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? otherlv_35= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:899:3: otherlv_0= 'RepositoryComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? otherlv_35= '}'
+            {
+            otherlv_0=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleRepositoryComponent_Impl2128); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getRepositoryComponent_ImplAccess().getRepositoryComponentKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:903:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:904:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:904:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:905:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2149);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepositoryComponent_Impl2161); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleRepositoryComponent_Impl2173); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getRepositoryComponent_ImplAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:929:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:930:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:930:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:931:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2194);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:947:2: (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==25) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:947:4: otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')'
+                    {
+                    otherlv_5=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleRepositoryComponent_Impl2207); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipKeyword_5_0());
+                        
+                    otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleRepositoryComponent_Impl2219); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getRepositoryComponent_ImplAccess().getLeftParenthesisKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:955:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:956:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:956:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:957:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getRepositoryComponent_ImplRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2242);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:970:2: (otherlv_8= ',' ( ( ruleEString ) ) )*
+                    loop18:
+                    do {
+                        int alt18=2;
+                        int LA18_0 = input.LA(1);
+
+                        if ( (LA18_0==15) ) {
+                            alt18=1;
+                        }
+
+
+                        switch (alt18) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:970:4: otherlv_8= ',' ( ( ruleEString ) )
+                    	    {
+                    	    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepositoryComponent_Impl2255); 
+
+                    	        	newLeafNode(otherlv_8, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:974:1: ( ( ruleEString ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:975:1: ( ruleEString )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:975:1: ( ruleEString )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:976:3: ruleEString
+                    	    {
+
+                    	    			if (current==null) {
+                    	    	            current = createModelElement(grammarAccess.getRepositoryComponent_ImplRule());
+                    	    	        }
+                    	            
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2278);
+                    	    ruleEString();
+
+                    	    state._fsp--;
+
+                    	     
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop18;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleRepositoryComponent_Impl2292); 
+
+                        	newLeafNode(otherlv_10, grammarAccess.getRepositoryComponent_ImplAccess().getRightParenthesisKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:993:3: (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==26) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:993:5: otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}'
+                    {
+                    otherlv_11=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleRepositoryComponent_Impl2307); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesKeyword_6_0());
+                        
+                    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepositoryComponent_Impl2319); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1001:1: ( (lv_providedRoles_13_0= ruleProvidedRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1002:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1002:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1003:3: lv_providedRoles_13_0= ruleProvidedRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleRepositoryComponent_Impl2340);
+                    lv_providedRoles_13_0=ruleProvidedRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"providedRoles",
+                            		lv_providedRoles_13_0, 
+                            		"ProvidedRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1019:2: (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )*
+                    loop20:
+                    do {
+                        int alt20=2;
+                        int LA20_0 = input.LA(1);
+
+                        if ( (LA20_0==15) ) {
+                            alt20=1;
+                        }
+
+
+                        switch (alt20) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1019:4: otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    {
+                    	    otherlv_14=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepositoryComponent_Impl2353); 
+
+                    	        	newLeafNode(otherlv_14, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1023:1: ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1024:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1024:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1025:3: lv_providedRoles_15_0= ruleProvidedRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleRepositoryComponent_Impl2374);
+                    	    lv_providedRoles_15_0=ruleProvidedRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"providedRoles",
+                    	            		lv_providedRoles_15_0, 
+                    	            		"ProvidedRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop20;
+                        }
+                    } while (true);
+
+                    otherlv_16=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepositoryComponent_Impl2388); 
+
+                        	newLeafNode(otherlv_16, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1045:3: (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==27) ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1045:5: otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleRepositoryComponent_Impl2403); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorKeyword_7_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepositoryComponent_Impl2415); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_7_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1053:1: ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1054:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1054:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1055:3: lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleRepositoryComponent_Impl2436);
+                    lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"blackBoxBehavior",
+                            		lv_blackBoxBehavior_19_0, 
+                            		"BlackBoxBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1071:2: (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )*
+                    loop22:
+                    do {
+                        int alt22=2;
+                        int LA22_0 = input.LA(1);
+
+                        if ( (LA22_0==15) ) {
+                            alt22=1;
+                        }
+
+
+                        switch (alt22) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1071:4: otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepositoryComponent_Impl2449); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_7_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1075:1: ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1076:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1076:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1077:3: lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleRepositoryComponent_Impl2470);
+                    	    lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"blackBoxBehavior",
+                    	            		lv_blackBoxBehavior_21_0, 
+                    	            		"BlackBoxBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop22;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepositoryComponent_Impl2484); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_7_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1097:3: (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==28) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1097:5: otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}'
+                    {
+                    otherlv_23=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleRepositoryComponent_Impl2499); 
+
+                        	newLeafNode(otherlv_23, grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesKeyword_8_0());
+                        
+                    otherlv_24=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepositoryComponent_Impl2511); 
+
+                        	newLeafNode(otherlv_24, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_8_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1105:1: ( (lv_requiredRoles_25_0= ruleRequiredRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1106:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1106:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1107:3: lv_requiredRoles_25_0= ruleRequiredRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleRepositoryComponent_Impl2532);
+                    lv_requiredRoles_25_0=ruleRequiredRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"requiredRoles",
+                            		lv_requiredRoles_25_0, 
+                            		"RequiredRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1123:2: (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )*
+                    loop24:
+                    do {
+                        int alt24=2;
+                        int LA24_0 = input.LA(1);
+
+                        if ( (LA24_0==15) ) {
+                            alt24=1;
+                        }
+
+
+                        switch (alt24) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1123:4: otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    {
+                    	    otherlv_26=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepositoryComponent_Impl2545); 
+
+                    	        	newLeafNode(otherlv_26, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_8_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1127:1: ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1128:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1128:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1129:3: lv_requiredRoles_27_0= ruleRequiredRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleRepositoryComponent_Impl2566);
+                    	    lv_requiredRoles_27_0=ruleRequiredRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"requiredRoles",
+                    	            		lv_requiredRoles_27_0, 
+                    	            		"RequiredRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop24;
+                        }
+                    } while (true);
+
+                    otherlv_28=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepositoryComponent_Impl2580); 
+
+                        	newLeafNode(otherlv_28, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_8_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1149:3: (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )?
+            int alt27=2;
+            int LA27_0 = input.LA(1);
+
+            if ( (LA27_0==29) ) {
+                alt27=1;
+            }
+            switch (alt27) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1149:5: otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}'
+                    {
+                    otherlv_29=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleRepositoryComponent_Impl2595); 
+
+                        	newLeafNode(otherlv_29, grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorKeyword_9_0());
+                        
+                    otherlv_30=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRepositoryComponent_Impl2607); 
+
+                        	newLeafNode(otherlv_30, grammarAccess.getRepositoryComponent_ImplAccess().getLeftCurlyBracketKeyword_9_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1157:1: ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1158:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1158:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1159:3: lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleRepositoryComponent_Impl2628);
+                    lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"coarseGrainedBehavior",
+                            		lv_coarseGrainedBehavior_31_0, 
+                            		"CoarseGrainedBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1175:2: (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )*
+                    loop26:
+                    do {
+                        int alt26=2;
+                        int LA26_0 = input.LA(1);
+
+                        if ( (LA26_0==15) ) {
+                            alt26=1;
+                        }
+
+
+                        switch (alt26) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1175:4: otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    {
+                    	    otherlv_32=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleRepositoryComponent_Impl2641); 
+
+                    	        	newLeafNode(otherlv_32, grammarAccess.getRepositoryComponent_ImplAccess().getCommaKeyword_9_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1179:1: ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1180:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1180:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1181:3: lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getRepositoryComponent_ImplAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleRepositoryComponent_Impl2662);
+                    	    lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getRepositoryComponent_ImplRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"coarseGrainedBehavior",
+                    	            		lv_coarseGrainedBehavior_33_0, 
+                    	            		"CoarseGrainedBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop26;
+                        }
+                    } while (true);
+
+                    otherlv_34=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepositoryComponent_Impl2676); 
+
+                        	newLeafNode(otherlv_34, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_9_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_35=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRepositoryComponent_Impl2690); 
+
+                	newLeafNode(otherlv_35, grammarAccess.getRepositoryComponent_ImplAccess().getRightCurlyBracketKeyword_10());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRepositoryComponent_Impl"
+
+
+    // $ANTLR start "entryRuleCollectionDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1213:1: entryRuleCollectionDataType returns [EObject current=null] : iv_ruleCollectionDataType= ruleCollectionDataType EOF ;
+    public final EObject entryRuleCollectionDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCollectionDataType = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1214:2: (iv_ruleCollectionDataType= ruleCollectionDataType EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1215:2: iv_ruleCollectionDataType= ruleCollectionDataType EOF
+            {
+             newCompositeNode(grammarAccess.getCollectionDataTypeRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCollectionDataType_in_entryRuleCollectionDataType2726);
+            iv_ruleCollectionDataType=ruleCollectionDataType();
+
+            state._fsp--;
+
+             current =iv_ruleCollectionDataType; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCollectionDataType2736); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCollectionDataType"
+
+
+    // $ANTLR start "ruleCollectionDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1222:1: ruleCollectionDataType returns [EObject current=null] : (otherlv_0= 'CollectionDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'innerType' ( ( ruleEString ) ) otherlv_7= '}' ) ;
+    public final EObject ruleCollectionDataType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1225:28: ( (otherlv_0= 'CollectionDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'innerType' ( ( ruleEString ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1226:1: (otherlv_0= 'CollectionDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'innerType' ( ( ruleEString ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1226:1: (otherlv_0= 'CollectionDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'innerType' ( ( ruleEString ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1226:3: otherlv_0= 'CollectionDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'innerType' ( ( ruleEString ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleCollectionDataType2773); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCollectionDataTypeAccess().getCollectionDataTypeKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1230:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1231:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1231:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1232:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCollectionDataTypeAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCollectionDataType2794);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCollectionDataTypeRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCollectionDataType2806); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getCollectionDataTypeAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleCollectionDataType2818); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getCollectionDataTypeAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1256:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1257:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1257:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1258:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCollectionDataTypeAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCollectionDataType2839);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCollectionDataTypeRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleCollectionDataType2851); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getCollectionDataTypeAccess().getInnerTypeKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1278:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1279:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1279:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1280:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getCollectionDataTypeRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getCollectionDataTypeAccess().getInnerTypeDataTypeCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCollectionDataType2874);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCollectionDataType2886); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getCollectionDataTypeAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCollectionDataType"
+
+
+    // $ANTLR start "entryRuleCompositeDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1305:1: entryRuleCompositeDataType returns [EObject current=null] : iv_ruleCompositeDataType= ruleCompositeDataType EOF ;
+    public final EObject entryRuleCompositeDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCompositeDataType = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1306:2: (iv_ruleCompositeDataType= ruleCompositeDataType EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1307:2: iv_ruleCompositeDataType= ruleCompositeDataType EOF
+            {
+             newCompositeNode(grammarAccess.getCompositeDataTypeRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCompositeDataType_in_entryRuleCompositeDataType2922);
+            iv_ruleCompositeDataType=ruleCompositeDataType();
+
+            state._fsp--;
+
+             current =iv_ruleCompositeDataType; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompositeDataType2932); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCompositeDataType"
+
+
+    // $ANTLR start "ruleCompositeDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1314:1: ruleCompositeDataType returns [EObject current=null] : (otherlv_0= 'CompositeDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentTypes' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'innerDeclarations' otherlv_12= '{' ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) ) (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )* otherlv_16= '}' )? otherlv_17= '}' ) ;
+    public final EObject ruleCompositeDataType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_innerDeclarations_13_0 = null;
+
+        EObject lv_innerDeclarations_15_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1317:28: ( (otherlv_0= 'CompositeDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentTypes' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'innerDeclarations' otherlv_12= '{' ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) ) (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )* otherlv_16= '}' )? otherlv_17= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1318:1: (otherlv_0= 'CompositeDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentTypes' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'innerDeclarations' otherlv_12= '{' ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) ) (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )* otherlv_16= '}' )? otherlv_17= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1318:1: (otherlv_0= 'CompositeDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentTypes' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'innerDeclarations' otherlv_12= '{' ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) ) (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )* otherlv_16= '}' )? otherlv_17= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1318:3: otherlv_0= 'CompositeDataType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'parentTypes' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'innerDeclarations' otherlv_12= '{' ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) ) (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )* otherlv_16= '}' )? otherlv_17= '}'
+            {
+            otherlv_0=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleCompositeDataType2969); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCompositeDataTypeAccess().getCompositeDataTypeKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1322:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1323:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1323:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1324:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeDataType2990);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeDataType3002); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getCompositeDataTypeAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleCompositeDataType3014); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getCompositeDataTypeAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1348:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1349:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1349:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1350:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeDataType3035);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1366:2: (otherlv_5= 'parentTypes' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0==33) ) {
+                alt29=1;
+            }
+            switch (alt29) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1366:4: otherlv_5= 'parentTypes' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')'
+                    {
+                    otherlv_5=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleCompositeDataType3048); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getCompositeDataTypeAccess().getParentTypesKeyword_5_0());
+                        
+                    otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleCompositeDataType3060); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getCompositeDataTypeAccess().getLeftParenthesisKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1374:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1375:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1375:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1376:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getCompositeDataTypeRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeDataType3083);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1389:2: (otherlv_8= ',' ( ( ruleEString ) ) )*
+                    loop28:
+                    do {
+                        int alt28=2;
+                        int LA28_0 = input.LA(1);
+
+                        if ( (LA28_0==15) ) {
+                            alt28=1;
+                        }
+
+
+                        switch (alt28) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1389:4: otherlv_8= ',' ( ( ruleEString ) )
+                    	    {
+                    	    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeDataType3096); 
+
+                    	        	newLeafNode(otherlv_8, grammarAccess.getCompositeDataTypeAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1393:1: ( ( ruleEString ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1394:1: ( ruleEString )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1394:1: ( ruleEString )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1395:3: ruleEString
+                    	    {
+
+                    	    			if (current==null) {
+                    	    	            current = createModelElement(grammarAccess.getCompositeDataTypeRule());
+                    	    	        }
+                    	            
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getParentTypesCompositeDataTypeCrossReference_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeDataType3119);
+                    	    ruleEString();
+
+                    	    state._fsp--;
+
+                    	     
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop28;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleCompositeDataType3133); 
+
+                        	newLeafNode(otherlv_10, grammarAccess.getCompositeDataTypeAccess().getRightParenthesisKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1412:3: (otherlv_11= 'innerDeclarations' otherlv_12= '{' ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) ) (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )* otherlv_16= '}' )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+
+            if ( (LA31_0==34) ) {
+                alt31=1;
+            }
+            switch (alt31) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1412:5: otherlv_11= 'innerDeclarations' otherlv_12= '{' ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) ) (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )* otherlv_16= '}'
+                    {
+                    otherlv_11=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleCompositeDataType3148); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsKeyword_6_0());
+                        
+                    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeDataType3160); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getCompositeDataTypeAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1420:1: ( (lv_innerDeclarations_13_0= ruleInnerDeclaration ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1421:1: (lv_innerDeclarations_13_0= ruleInnerDeclaration )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1421:1: (lv_innerDeclarations_13_0= ruleInnerDeclaration )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1422:3: lv_innerDeclarations_13_0= ruleInnerDeclaration
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsInnerDeclarationParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleInnerDeclaration_in_ruleCompositeDataType3181);
+                    lv_innerDeclarations_13_0=ruleInnerDeclaration();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"innerDeclarations",
+                            		lv_innerDeclarations_13_0, 
+                            		"InnerDeclaration");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1438:2: (otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) ) )*
+                    loop30:
+                    do {
+                        int alt30=2;
+                        int LA30_0 = input.LA(1);
+
+                        if ( (LA30_0==15) ) {
+                            alt30=1;
+                        }
+
+
+                        switch (alt30) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1438:4: otherlv_14= ',' ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) )
+                    	    {
+                    	    otherlv_14=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeDataType3194); 
+
+                    	        	newLeafNode(otherlv_14, grammarAccess.getCompositeDataTypeAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1442:1: ( (lv_innerDeclarations_15_0= ruleInnerDeclaration ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1443:1: (lv_innerDeclarations_15_0= ruleInnerDeclaration )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1443:1: (lv_innerDeclarations_15_0= ruleInnerDeclaration )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1444:3: lv_innerDeclarations_15_0= ruleInnerDeclaration
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeDataTypeAccess().getInnerDeclarationsInnerDeclarationParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleInnerDeclaration_in_ruleCompositeDataType3215);
+                    	    lv_innerDeclarations_15_0=ruleInnerDeclaration();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeDataTypeRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"innerDeclarations",
+                    	            		lv_innerDeclarations_15_0, 
+                    	            		"InnerDeclaration");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop30;
+                        }
+                    } while (true);
+
+                    otherlv_16=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeDataType3229); 
+
+                        	newLeafNode(otherlv_16, grammarAccess.getCompositeDataTypeAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_17=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeDataType3243); 
+
+                	newLeafNode(otherlv_17, grammarAccess.getCompositeDataTypeAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCompositeDataType"
+
+
+    // $ANTLR start "entryRulePrimitiveDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1476:1: entryRulePrimitiveDataType returns [EObject current=null] : iv_rulePrimitiveDataType= rulePrimitiveDataType EOF ;
+    public final EObject entryRulePrimitiveDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePrimitiveDataType = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1477:2: (iv_rulePrimitiveDataType= rulePrimitiveDataType EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1478:2: iv_rulePrimitiveDataType= rulePrimitiveDataType EOF
+            {
+             newCompositeNode(grammarAccess.getPrimitiveDataTypeRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePrimitiveDataType_in_entryRulePrimitiveDataType3279);
+            iv_rulePrimitiveDataType=rulePrimitiveDataType();
+
+            state._fsp--;
+
+             current =iv_rulePrimitiveDataType; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePrimitiveDataType3289); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePrimitiveDataType"
+
+
+    // $ANTLR start "rulePrimitiveDataType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1485:1: rulePrimitiveDataType returns [EObject current=null] : (otherlv_0= 'PrimitiveDataType' otherlv_1= '{' otherlv_2= 'type' ( (lv_type_3_0= rulePrimitiveTypeEnum ) ) otherlv_4= '}' ) ;
+    public final EObject rulePrimitiveDataType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Enumerator lv_type_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1488:28: ( (otherlv_0= 'PrimitiveDataType' otherlv_1= '{' otherlv_2= 'type' ( (lv_type_3_0= rulePrimitiveTypeEnum ) ) otherlv_4= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1489:1: (otherlv_0= 'PrimitiveDataType' otherlv_1= '{' otherlv_2= 'type' ( (lv_type_3_0= rulePrimitiveTypeEnum ) ) otherlv_4= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1489:1: (otherlv_0= 'PrimitiveDataType' otherlv_1= '{' otherlv_2= 'type' ( (lv_type_3_0= rulePrimitiveTypeEnum ) ) otherlv_4= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1489:3: otherlv_0= 'PrimitiveDataType' otherlv_1= '{' otherlv_2= 'type' ( (lv_type_3_0= rulePrimitiveTypeEnum ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,35,FollowSets000.FOLLOW_35_in_rulePrimitiveDataType3326); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getPrimitiveDataTypeAccess().getPrimitiveDataTypeKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_rulePrimitiveDataType3338); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getPrimitiveDataTypeAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,36,FollowSets000.FOLLOW_36_in_rulePrimitiveDataType3350); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getPrimitiveDataTypeAccess().getTypeKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1501:1: ( (lv_type_3_0= rulePrimitiveTypeEnum ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1502:1: (lv_type_3_0= rulePrimitiveTypeEnum )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1502:1: (lv_type_3_0= rulePrimitiveTypeEnum )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1503:3: lv_type_3_0= rulePrimitiveTypeEnum
+            {
+             
+            	        newCompositeNode(grammarAccess.getPrimitiveDataTypeAccess().getTypePrimitiveTypeEnumEnumRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_rulePrimitiveTypeEnum_in_rulePrimitiveDataType3371);
+            lv_type_3_0=rulePrimitiveTypeEnum();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPrimitiveDataTypeRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"type",
+                    		lv_type_3_0, 
+                    		"PrimitiveTypeEnum");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_rulePrimitiveDataType3383); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getPrimitiveDataTypeAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePrimitiveDataType"
+
+
+    // $ANTLR start "entryRuleInnerDeclaration"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1531:1: entryRuleInnerDeclaration returns [EObject current=null] : iv_ruleInnerDeclaration= ruleInnerDeclaration EOF ;
+    public final EObject entryRuleInnerDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleInnerDeclaration = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1532:2: (iv_ruleInnerDeclaration= ruleInnerDeclaration EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1533:2: iv_ruleInnerDeclaration= ruleInnerDeclaration EOF
+            {
+             newCompositeNode(grammarAccess.getInnerDeclarationRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleInnerDeclaration_in_entryRuleInnerDeclaration3419);
+            iv_ruleInnerDeclaration=ruleInnerDeclaration();
+
+            state._fsp--;
+
+             current =iv_ruleInnerDeclaration; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInnerDeclaration3429); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleInnerDeclaration"
+
+
+    // $ANTLR start "ruleInnerDeclaration"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1540:1: ruleInnerDeclaration returns [EObject current=null] : (otherlv_0= 'InnerDeclaration' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' ) ;
+    public final EObject ruleInnerDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1543:28: ( (otherlv_0= 'InnerDeclaration' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1544:1: (otherlv_0= 'InnerDeclaration' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1544:1: (otherlv_0= 'InnerDeclaration' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1544:3: otherlv_0= 'InnerDeclaration' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleInnerDeclaration3466); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getInnerDeclarationAccess().getInnerDeclarationKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1548:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1549:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1549:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1550:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getInnerDeclarationAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInnerDeclaration3487);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getInnerDeclarationRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleInnerDeclaration3499); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getInnerDeclarationAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleInnerDeclaration3511); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getInnerDeclarationAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1574:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1575:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1575:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1576:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getInnerDeclarationAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInnerDeclaration3532);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getInnerDeclarationRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleInnerDeclaration3544); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getInnerDeclarationAccess().getDataTypeKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1596:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1597:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1597:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1598:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getInnerDeclarationRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getInnerDeclarationAccess().getDataTypeDataTypeCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInnerDeclaration3567);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleInnerDeclaration3579); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getInnerDeclarationAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleInnerDeclaration"
+
+
+    // $ANTLR start "entryRuleSignature"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1623:1: entryRuleSignature returns [EObject current=null] : iv_ruleSignature= ruleSignature EOF ;
+    public final EObject entryRuleSignature() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSignature = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1624:2: (iv_ruleSignature= ruleSignature EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1625:2: iv_ruleSignature= ruleSignature EOF
+            {
+             newCompositeNode(grammarAccess.getSignatureRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSignature_in_entryRuleSignature3615);
+            iv_ruleSignature=ruleSignature();
+
+            state._fsp--;
+
+             current =iv_ruleSignature; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSignature3625); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSignature"
+
+
+    // $ANTLR start "ruleSignature"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1632:1: ruleSignature returns [EObject current=null] : (otherlv_0= 'Signature' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'returnType' ( ( ruleEString ) ) )? (otherlv_7= 'parameters' otherlv_8= '{' ( (lv_parameters_9_0= ruleParameter ) ) (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) ;
+    public final EObject ruleSignature() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_parameters_9_0 = null;
+
+        EObject lv_parameters_11_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1635:28: ( (otherlv_0= 'Signature' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'returnType' ( ( ruleEString ) ) )? (otherlv_7= 'parameters' otherlv_8= '{' ( (lv_parameters_9_0= ruleParameter ) ) (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1636:1: (otherlv_0= 'Signature' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'returnType' ( ( ruleEString ) ) )? (otherlv_7= 'parameters' otherlv_8= '{' ( (lv_parameters_9_0= ruleParameter ) ) (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1636:1: (otherlv_0= 'Signature' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'returnType' ( ( ruleEString ) ) )? (otherlv_7= 'parameters' otherlv_8= '{' ( (lv_parameters_9_0= ruleParameter ) ) (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1636:3: otherlv_0= 'Signature' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'returnType' ( ( ruleEString ) ) )? (otherlv_7= 'parameters' otherlv_8= '{' ( (lv_parameters_9_0= ruleParameter ) ) (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )* otherlv_12= '}' )? otherlv_13= '}'
+            {
+            otherlv_0=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleSignature3662); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getSignatureAccess().getSignatureKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1640:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1641:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1641:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1642:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getSignatureAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSignature3683);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getSignatureRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSignature3695); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getSignatureAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleSignature3707); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getSignatureAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1666:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1667:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1667:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1668:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getSignatureAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSignature3728);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getSignatureRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1684:2: (otherlv_5= 'returnType' ( ( ruleEString ) ) )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==40) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1684:4: otherlv_5= 'returnType' ( ( ruleEString ) )
+                    {
+                    otherlv_5=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleSignature3741); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getSignatureAccess().getReturnTypeKeyword_5_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1688:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1689:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1689:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1690:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getSignatureRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getSignatureAccess().getReturnTypeDataTypeCrossReference_5_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSignature3764);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1703:4: (otherlv_7= 'parameters' otherlv_8= '{' ( (lv_parameters_9_0= ruleParameter ) ) (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )* otherlv_12= '}' )?
+            int alt34=2;
+            int LA34_0 = input.LA(1);
+
+            if ( (LA34_0==41) ) {
+                alt34=1;
+            }
+            switch (alt34) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1703:6: otherlv_7= 'parameters' otherlv_8= '{' ( (lv_parameters_9_0= ruleParameter ) ) (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )* otherlv_12= '}'
+                    {
+                    otherlv_7=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleSignature3779); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getSignatureAccess().getParametersKeyword_6_0());
+                        
+                    otherlv_8=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSignature3791); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getSignatureAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1711:1: ( (lv_parameters_9_0= ruleParameter ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1712:1: (lv_parameters_9_0= ruleParameter )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1712:1: (lv_parameters_9_0= ruleParameter )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1713:3: lv_parameters_9_0= ruleParameter
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSignatureAccess().getParametersParameterParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleParameter_in_ruleSignature3812);
+                    lv_parameters_9_0=ruleParameter();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSignatureRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"parameters",
+                            		lv_parameters_9_0, 
+                            		"Parameter");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1729:2: (otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) ) )*
+                    loop33:
+                    do {
+                        int alt33=2;
+                        int LA33_0 = input.LA(1);
+
+                        if ( (LA33_0==15) ) {
+                            alt33=1;
+                        }
+
+
+                        switch (alt33) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1729:4: otherlv_10= ',' ( (lv_parameters_11_0= ruleParameter ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSignature3825); 
+
+                    	        	newLeafNode(otherlv_10, grammarAccess.getSignatureAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1733:1: ( (lv_parameters_11_0= ruleParameter ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1734:1: (lv_parameters_11_0= ruleParameter )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1734:1: (lv_parameters_11_0= ruleParameter )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1735:3: lv_parameters_11_0= ruleParameter
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSignatureAccess().getParametersParameterParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleParameter_in_ruleSignature3846);
+                    	    lv_parameters_11_0=ruleParameter();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSignatureRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"parameters",
+                    	            		lv_parameters_11_0, 
+                    	            		"Parameter");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop33;
+                        }
+                    } while (true);
+
+                    otherlv_12=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSignature3860); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getSignatureAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_13=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSignature3874); 
+
+                	newLeafNode(otherlv_13, grammarAccess.getSignatureAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSignature"
+
+
+    // $ANTLR start "entryRuleParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1767:1: entryRuleParameter returns [EObject current=null] : iv_ruleParameter= ruleParameter EOF ;
+    public final EObject entryRuleParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleParameter = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1768:2: (iv_ruleParameter= ruleParameter EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1769:2: iv_ruleParameter= ruleParameter EOF
+            {
+             newCompositeNode(grammarAccess.getParameterRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleParameter_in_entryRuleParameter3910);
+            iv_ruleParameter=ruleParameter();
+
+            state._fsp--;
+
+             current =iv_ruleParameter; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleParameter3920); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleParameter"
+
+
+    // $ANTLR start "ruleParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1776:1: ruleParameter returns [EObject current=null] : (otherlv_0= 'Parameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'modifier' ( (lv_modifier_4_0= ruleParameterModifier ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' ) ;
+    public final EObject ruleParameter() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        Enumerator lv_modifier_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1779:28: ( (otherlv_0= 'Parameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'modifier' ( (lv_modifier_4_0= ruleParameterModifier ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1780:1: (otherlv_0= 'Parameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'modifier' ( (lv_modifier_4_0= ruleParameterModifier ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1780:1: (otherlv_0= 'Parameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'modifier' ( (lv_modifier_4_0= ruleParameterModifier ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1780:3: otherlv_0= 'Parameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'modifier' ( (lv_modifier_4_0= ruleParameterModifier ) ) otherlv_5= 'dataType' ( ( ruleEString ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,42,FollowSets000.FOLLOW_42_in_ruleParameter3957); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getParameterAccess().getParameterKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1784:1: ( (lv_name_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1785:1: (lv_name_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1785:1: (lv_name_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1786:3: lv_name_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getParameterAccess().getNameEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleParameter3978);
+            lv_name_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleParameter3990); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getParameterAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,43,FollowSets000.FOLLOW_43_in_ruleParameter4002); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getParameterAccess().getModifierKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1810:1: ( (lv_modifier_4_0= ruleParameterModifier ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1811:1: (lv_modifier_4_0= ruleParameterModifier )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1811:1: (lv_modifier_4_0= ruleParameterModifier )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1812:3: lv_modifier_4_0= ruleParameterModifier
+            {
+             
+            	        newCompositeNode(grammarAccess.getParameterAccess().getModifierParameterModifierEnumRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleParameterModifier_in_ruleParameter4023);
+            lv_modifier_4_0=ruleParameterModifier();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"modifier",
+                    		lv_modifier_4_0, 
+                    		"ParameterModifier");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleParameter4035); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getParameterAccess().getDataTypeKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1832:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1833:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1833:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1834:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getParameterAccess().getDataTypeDataTypeCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleParameter4058);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleParameter4070); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getParameterAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleParameter"
+
+
+    // $ANTLR start "entryRuleProvidedRole"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1859:1: entryRuleProvidedRole returns [EObject current=null] : iv_ruleProvidedRole= ruleProvidedRole EOF ;
+    public final EObject entryRuleProvidedRole() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProvidedRole = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1860:2: (iv_ruleProvidedRole= ruleProvidedRole EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1861:2: iv_ruleProvidedRole= ruleProvidedRole EOF
+            {
+             newCompositeNode(grammarAccess.getProvidedRoleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_entryRuleProvidedRole4106);
+            iv_ruleProvidedRole=ruleProvidedRole();
+
+            state._fsp--;
+
+             current =iv_ruleProvidedRole; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProvidedRole4116); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProvidedRole"
+
+
+    // $ANTLR start "ruleProvidedRole"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1868:1: ruleProvidedRole returns [EObject current=null] : (otherlv_0= 'ProvidedRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' ) ;
+    public final EObject ruleProvidedRole() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1871:28: ( (otherlv_0= 'ProvidedRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1872:1: (otherlv_0= 'ProvidedRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1872:1: (otherlv_0= 'ProvidedRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1872:3: otherlv_0= 'ProvidedRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,44,FollowSets000.FOLLOW_44_in_ruleProvidedRole4153); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getProvidedRoleAccess().getProvidedRoleKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1876:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1877:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1877:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1878:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getProvidedRoleAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedRole4174);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProvidedRoleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProvidedRole4186); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getProvidedRoleAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleProvidedRole4198); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getProvidedRoleAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1902:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1903:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1903:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1904:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getProvidedRoleAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedRole4219);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProvidedRoleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleProvidedRole4231); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getProvidedRoleAccess().getInterfaceKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1924:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1925:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1925:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1926:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getProvidedRoleRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getProvidedRoleAccess().getInterfaceInterfaceCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedRole4254);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleProvidedRole4266); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getProvidedRoleAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProvidedRole"
+
+
+    // $ANTLR start "entryRuleBlackBoxBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1951:1: entryRuleBlackBoxBehavior returns [EObject current=null] : iv_ruleBlackBoxBehavior= ruleBlackBoxBehavior EOF ;
+    public final EObject entryRuleBlackBoxBehavior() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBlackBoxBehavior = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1952:2: (iv_ruleBlackBoxBehavior= ruleBlackBoxBehavior EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1953:2: iv_ruleBlackBoxBehavior= ruleBlackBoxBehavior EOF
+            {
+             newCompositeNode(grammarAccess.getBlackBoxBehaviorRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_entryRuleBlackBoxBehavior4302);
+            iv_ruleBlackBoxBehavior=ruleBlackBoxBehavior();
+
+            state._fsp--;
+
+             current =iv_ruleBlackBoxBehavior; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBlackBoxBehavior4312); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBlackBoxBehavior"
+
+
+    // $ANTLR start "ruleBlackBoxBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1960:1: ruleBlackBoxBehavior returns [EObject current=null] : (otherlv_0= 'BlackBoxBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'responseTimeSpecification' ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) ) )? otherlv_14= '}' ) ;
+    public final EObject ruleBlackBoxBehavior() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        EObject lv_influencingParameter_8_0 = null;
+
+        EObject lv_influencingParameter_10_0 = null;
+
+        EObject lv_responseTimeSpecification_13_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1963:28: ( (otherlv_0= 'BlackBoxBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'responseTimeSpecification' ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) ) )? otherlv_14= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1964:1: (otherlv_0= 'BlackBoxBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'responseTimeSpecification' ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) ) )? otherlv_14= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1964:1: (otherlv_0= 'BlackBoxBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'responseTimeSpecification' ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) ) )? otherlv_14= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1964:3: otherlv_0= 'BlackBoxBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'responseTimeSpecification' ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) ) )? otherlv_14= '}'
+            {
+            otherlv_0=(Token)match(input,46,FollowSets000.FOLLOW_46_in_ruleBlackBoxBehavior4349); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getBlackBoxBehaviorAccess().getBlackBoxBehaviorKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBlackBoxBehavior4361); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getBlackBoxBehaviorAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1972:1: (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==47) ) {
+                alt35=1;
+            }
+            switch (alt35) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1972:3: otherlv_2= 'describedSignature' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleBlackBoxBehavior4374); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1976:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1977:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1977:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1978:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getBlackBoxBehaviorRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBlackBoxBehavior4397);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_4=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleBlackBoxBehavior4411); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1995:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1996:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1996:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:1997:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getBlackBoxBehaviorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getDescribedEntityInterfaceProvidingEntityCrossReference_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBlackBoxBehavior4434);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2010:2: (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )?
+            int alt37=2;
+            int LA37_0 = input.LA(1);
+
+            if ( (LA37_0==49) ) {
+                alt37=1;
+            }
+            switch (alt37) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2010:4: otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}'
+                    {
+                    otherlv_6=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleBlackBoxBehavior4447); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterKeyword_5_0());
+                        
+                    otherlv_7=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBlackBoxBehavior4459); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getBlackBoxBehaviorAccess().getLeftCurlyBracketKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2018:1: ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2019:1: (lv_influencingParameter_8_0= ruleInfluencingParameter )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2019:1: (lv_influencingParameter_8_0= ruleInfluencingParameter )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2020:3: lv_influencingParameter_8_0= ruleInfluencingParameter
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_in_ruleBlackBoxBehavior4480);
+                    lv_influencingParameter_8_0=ruleInfluencingParameter();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBlackBoxBehaviorRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"influencingParameter",
+                            		lv_influencingParameter_8_0, 
+                            		"InfluencingParameter");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2036:2: (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )*
+                    loop36:
+                    do {
+                        int alt36=2;
+                        int LA36_0 = input.LA(1);
+
+                        if ( (LA36_0==15) ) {
+                            alt36=1;
+                        }
+
+
+                        switch (alt36) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2036:4: otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBlackBoxBehavior4493); 
+
+                    	        	newLeafNode(otherlv_9, grammarAccess.getBlackBoxBehaviorAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2040:1: ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2041:1: (lv_influencingParameter_10_0= ruleInfluencingParameter )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2041:1: (lv_influencingParameter_10_0= ruleInfluencingParameter )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2042:3: lv_influencingParameter_10_0= ruleInfluencingParameter
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_in_ruleBlackBoxBehavior4514);
+                    	    lv_influencingParameter_10_0=ruleInfluencingParameter();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBlackBoxBehaviorRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"influencingParameter",
+                    	            		lv_influencingParameter_10_0, 
+                    	            		"InfluencingParameter");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop36;
+                        }
+                    } while (true);
+
+                    otherlv_11=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBlackBoxBehavior4528); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getBlackBoxBehaviorAccess().getRightCurlyBracketKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2062:3: (otherlv_12= 'responseTimeSpecification' ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) ) )?
+            int alt38=2;
+            int LA38_0 = input.LA(1);
+
+            if ( (LA38_0==50) ) {
+                alt38=1;
+            }
+            switch (alt38) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2062:5: otherlv_12= 'responseTimeSpecification' ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) )
+                    {
+                    otherlv_12=(Token)match(input,50,FollowSets000.FOLLOW_50_in_ruleBlackBoxBehavior4543); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getBlackBoxBehaviorAccess().getResponseTimeSpecificationKeyword_6_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2066:1: ( (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2067:1: (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2067:1: (lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2068:3: lv_responseTimeSpecification_13_0= ruleResponseTimeSpecification
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBlackBoxBehaviorAccess().getResponseTimeSpecificationResponseTimeSpecificationParserRuleCall_6_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleResponseTimeSpecification_in_ruleBlackBoxBehavior4564);
+                    lv_responseTimeSpecification_13_0=ruleResponseTimeSpecification();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBlackBoxBehaviorRule());
+                    	        }
+                           		set(
+                           			current, 
+                           			"responseTimeSpecification",
+                            		lv_responseTimeSpecification_13_0, 
+                            		"ResponseTimeSpecification");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_14=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBlackBoxBehavior4578); 
+
+                	newLeafNode(otherlv_14, grammarAccess.getBlackBoxBehaviorAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBlackBoxBehavior"
+
+
+    // $ANTLR start "entryRuleRequiredRole"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2096:1: entryRuleRequiredRole returns [EObject current=null] : iv_ruleRequiredRole= ruleRequiredRole EOF ;
+    public final EObject entryRuleRequiredRole() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRequiredRole = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2097:2: (iv_ruleRequiredRole= ruleRequiredRole EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2098:2: iv_ruleRequiredRole= ruleRequiredRole EOF
+            {
+             newCompositeNode(grammarAccess.getRequiredRoleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_entryRuleRequiredRole4614);
+            iv_ruleRequiredRole=ruleRequiredRole();
+
+            state._fsp--;
+
+             current =iv_ruleRequiredRole; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRequiredRole4624); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRequiredRole"
+
+
+    // $ANTLR start "ruleRequiredRole"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2105:1: ruleRequiredRole returns [EObject current=null] : (otherlv_0= 'RequiredRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' ) ;
+    public final EObject ruleRequiredRole() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2108:28: ( (otherlv_0= 'RequiredRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2109:1: (otherlv_0= 'RequiredRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2109:1: (otherlv_0= 'RequiredRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2109:3: otherlv_0= 'RequiredRole' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'interface' ( ( ruleEString ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,51,FollowSets000.FOLLOW_51_in_ruleRequiredRole4661); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getRequiredRoleAccess().getRequiredRoleKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2113:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2114:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2114:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2115:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRequiredRoleAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredRole4682);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRequiredRoleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRequiredRole4694); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getRequiredRoleAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleRequiredRole4706); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getRequiredRoleAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2139:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2140:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2140:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2141:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRequiredRoleAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredRole4727);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRequiredRoleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleRequiredRole4739); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getRequiredRoleAccess().getInterfaceKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2161:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2162:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2162:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2163:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getRequiredRoleRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getRequiredRoleAccess().getInterfaceInterfaceCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredRole4762);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRequiredRole4774); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getRequiredRoleAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRequiredRole"
+
+
+    // $ANTLR start "entryRuleCoarseGrainedBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2188:1: entryRuleCoarseGrainedBehavior returns [EObject current=null] : iv_ruleCoarseGrainedBehavior= ruleCoarseGrainedBehavior EOF ;
+    public final EObject entryRuleCoarseGrainedBehavior() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCoarseGrainedBehavior = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2189:2: (iv_ruleCoarseGrainedBehavior= ruleCoarseGrainedBehavior EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2190:2: iv_ruleCoarseGrainedBehavior= ruleCoarseGrainedBehavior EOF
+            {
+             newCompositeNode(grammarAccess.getCoarseGrainedBehaviorRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_entryRuleCoarseGrainedBehavior4810);
+            iv_ruleCoarseGrainedBehavior=ruleCoarseGrainedBehavior();
+
+            state._fsp--;
+
+             current =iv_ruleCoarseGrainedBehavior; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCoarseGrainedBehavior4820); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCoarseGrainedBehavior"
+
+
+    // $ANTLR start "ruleCoarseGrainedBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2197:1: ruleCoarseGrainedBehavior returns [EObject current=null] : (otherlv_0= 'CoarseGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'externalCallFrequency' otherlv_13= '{' ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) ) (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )* otherlv_17= '}' )? (otherlv_18= 'resourceDemandSpecification' otherlv_19= '{' ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) ) (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )* otherlv_23= '}' )? otherlv_24= '}' ) ;
+    public final EObject ruleCoarseGrainedBehavior() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_19=null;
+        Token otherlv_21=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        EObject lv_influencingParameter_8_0 = null;
+
+        EObject lv_influencingParameter_10_0 = null;
+
+        EObject lv_externalCallFrequency_14_0 = null;
+
+        EObject lv_externalCallFrequency_16_0 = null;
+
+        EObject lv_resourceDemandSpecification_20_0 = null;
+
+        EObject lv_resourceDemandSpecification_22_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2200:28: ( (otherlv_0= 'CoarseGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'externalCallFrequency' otherlv_13= '{' ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) ) (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )* otherlv_17= '}' )? (otherlv_18= 'resourceDemandSpecification' otherlv_19= '{' ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) ) (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )* otherlv_23= '}' )? otherlv_24= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2201:1: (otherlv_0= 'CoarseGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'externalCallFrequency' otherlv_13= '{' ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) ) (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )* otherlv_17= '}' )? (otherlv_18= 'resourceDemandSpecification' otherlv_19= '{' ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) ) (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )* otherlv_23= '}' )? otherlv_24= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2201:1: (otherlv_0= 'CoarseGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'externalCallFrequency' otherlv_13= '{' ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) ) (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )* otherlv_17= '}' )? (otherlv_18= 'resourceDemandSpecification' otherlv_19= '{' ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) ) (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )* otherlv_23= '}' )? otherlv_24= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2201:3: otherlv_0= 'CoarseGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'describedEntity' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'externalCallFrequency' otherlv_13= '{' ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) ) (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )* otherlv_17= '}' )? (otherlv_18= 'resourceDemandSpecification' otherlv_19= '{' ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) ) (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )* otherlv_23= '}' )? otherlv_24= '}'
+            {
+            otherlv_0=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleCoarseGrainedBehavior4857); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCoarseGrainedBehaviorAccess().getCoarseGrainedBehaviorKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCoarseGrainedBehavior4869); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2209:1: (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )?
+            int alt39=2;
+            int LA39_0 = input.LA(1);
+
+            if ( (LA39_0==47) ) {
+                alt39=1;
+            }
+            switch (alt39) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2209:3: otherlv_2= 'describedSignature' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleCoarseGrainedBehavior4882); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2213:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2214:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2214:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2215:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getCoarseGrainedBehaviorRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCoarseGrainedBehavior4905);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_4=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleCoarseGrainedBehavior4919); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2232:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2233:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2233:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2234:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getCoarseGrainedBehaviorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCoarseGrainedBehavior4942);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2247:2: (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )?
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==49) ) {
+                alt41=1;
+            }
+            switch (alt41) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2247:4: otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}'
+                    {
+                    otherlv_6=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleCoarseGrainedBehavior4955); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterKeyword_5_0());
+                        
+                    otherlv_7=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCoarseGrainedBehavior4967); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2255:1: ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2256:1: (lv_influencingParameter_8_0= ruleInfluencingParameter )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2256:1: (lv_influencingParameter_8_0= ruleInfluencingParameter )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2257:3: lv_influencingParameter_8_0= ruleInfluencingParameter
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_in_ruleCoarseGrainedBehavior4988);
+                    lv_influencingParameter_8_0=ruleInfluencingParameter();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"influencingParameter",
+                            		lv_influencingParameter_8_0, 
+                            		"InfluencingParameter");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2273:2: (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )*
+                    loop40:
+                    do {
+                        int alt40=2;
+                        int LA40_0 = input.LA(1);
+
+                        if ( (LA40_0==15) ) {
+                            alt40=1;
+                        }
+
+
+                        switch (alt40) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2273:4: otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCoarseGrainedBehavior5001); 
+
+                    	        	newLeafNode(otherlv_9, grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2277:1: ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2278:1: (lv_influencingParameter_10_0= ruleInfluencingParameter )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2278:1: (lv_influencingParameter_10_0= ruleInfluencingParameter )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2279:3: lv_influencingParameter_10_0= ruleInfluencingParameter
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_in_ruleCoarseGrainedBehavior5022);
+                    	    lv_influencingParameter_10_0=ruleInfluencingParameter();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"influencingParameter",
+                    	            		lv_influencingParameter_10_0, 
+                    	            		"InfluencingParameter");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop40;
+                        }
+                    } while (true);
+
+                    otherlv_11=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCoarseGrainedBehavior5036); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2299:3: (otherlv_12= 'externalCallFrequency' otherlv_13= '{' ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) ) (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )* otherlv_17= '}' )?
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( (LA43_0==53) ) {
+                alt43=1;
+            }
+            switch (alt43) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2299:5: otherlv_12= 'externalCallFrequency' otherlv_13= '{' ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) ) (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )* otherlv_17= '}'
+                    {
+                    otherlv_12=(Token)match(input,53,FollowSets000.FOLLOW_53_in_ruleCoarseGrainedBehavior5051); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyKeyword_6_0());
+                        
+                    otherlv_13=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCoarseGrainedBehavior5063); 
+
+                        	newLeafNode(otherlv_13, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2307:1: ( (lv_externalCallFrequency_14_0= ruleExternalCallFrequency ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2308:1: (lv_externalCallFrequency_14_0= ruleExternalCallFrequency )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2308:1: (lv_externalCallFrequency_14_0= ruleExternalCallFrequency )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2309:3: lv_externalCallFrequency_14_0= ruleExternalCallFrequency
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleExternalCallFrequency_in_ruleCoarseGrainedBehavior5084);
+                    lv_externalCallFrequency_14_0=ruleExternalCallFrequency();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"externalCallFrequency",
+                            		lv_externalCallFrequency_14_0, 
+                            		"ExternalCallFrequency");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2325:2: (otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) ) )*
+                    loop42:
+                    do {
+                        int alt42=2;
+                        int LA42_0 = input.LA(1);
+
+                        if ( (LA42_0==15) ) {
+                            alt42=1;
+                        }
+
+
+                        switch (alt42) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2325:4: otherlv_15= ',' ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) )
+                    	    {
+                    	    otherlv_15=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCoarseGrainedBehavior5097); 
+
+                    	        	newLeafNode(otherlv_15, grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2329:1: ( (lv_externalCallFrequency_16_0= ruleExternalCallFrequency ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2330:1: (lv_externalCallFrequency_16_0= ruleExternalCallFrequency )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2330:1: (lv_externalCallFrequency_16_0= ruleExternalCallFrequency )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2331:3: lv_externalCallFrequency_16_0= ruleExternalCallFrequency
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleExternalCallFrequency_in_ruleCoarseGrainedBehavior5118);
+                    	    lv_externalCallFrequency_16_0=ruleExternalCallFrequency();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"externalCallFrequency",
+                    	            		lv_externalCallFrequency_16_0, 
+                    	            		"ExternalCallFrequency");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop42;
+                        }
+                    } while (true);
+
+                    otherlv_17=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCoarseGrainedBehavior5132); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2351:3: (otherlv_18= 'resourceDemandSpecification' otherlv_19= '{' ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) ) (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )* otherlv_23= '}' )?
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==54) ) {
+                alt45=1;
+            }
+            switch (alt45) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2351:5: otherlv_18= 'resourceDemandSpecification' otherlv_19= '{' ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) ) (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )* otherlv_23= '}'
+                    {
+                    otherlv_18=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleCoarseGrainedBehavior5147); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationKeyword_7_0());
+                        
+                    otherlv_19=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCoarseGrainedBehavior5159); 
+
+                        	newLeafNode(otherlv_19, grammarAccess.getCoarseGrainedBehaviorAccess().getLeftCurlyBracketKeyword_7_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2359:1: ( (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2360:1: (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2360:1: (lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2361:3: lv_resourceDemandSpecification_20_0= ruleResourceDemandSpecification
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleResourceDemandSpecification_in_ruleCoarseGrainedBehavior5180);
+                    lv_resourceDemandSpecification_20_0=ruleResourceDemandSpecification();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"resourceDemandSpecification",
+                            		lv_resourceDemandSpecification_20_0, 
+                            		"ResourceDemandSpecification");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2377:2: (otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) ) )*
+                    loop44:
+                    do {
+                        int alt44=2;
+                        int LA44_0 = input.LA(1);
+
+                        if ( (LA44_0==15) ) {
+                            alt44=1;
+                        }
+
+
+                        switch (alt44) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2377:4: otherlv_21= ',' ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) )
+                    	    {
+                    	    otherlv_21=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCoarseGrainedBehavior5193); 
+
+                    	        	newLeafNode(otherlv_21, grammarAccess.getCoarseGrainedBehaviorAccess().getCommaKeyword_7_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2381:1: ( (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2382:1: (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2382:1: (lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2383:3: lv_resourceDemandSpecification_22_0= ruleResourceDemandSpecification
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCoarseGrainedBehaviorAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleResourceDemandSpecification_in_ruleCoarseGrainedBehavior5214);
+                    	    lv_resourceDemandSpecification_22_0=ruleResourceDemandSpecification();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCoarseGrainedBehaviorRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"resourceDemandSpecification",
+                    	            		lv_resourceDemandSpecification_22_0, 
+                    	            		"ResourceDemandSpecification");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop44;
+                        }
+                    } while (true);
+
+                    otherlv_23=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCoarseGrainedBehavior5228); 
+
+                        	newLeafNode(otherlv_23, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_7_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_24=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCoarseGrainedBehavior5242); 
+
+                	newLeafNode(otherlv_24, grammarAccess.getCoarseGrainedBehaviorAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCoarseGrainedBehavior"
+
+
+    // $ANTLR start "entryRuleBasicComponent"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2415:1: entryRuleBasicComponent returns [EObject current=null] : iv_ruleBasicComponent= ruleBasicComponent EOF ;
+    public final EObject entryRuleBasicComponent() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBasicComponent = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2416:2: (iv_ruleBasicComponent= ruleBasicComponent EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2417:2: iv_ruleBasicComponent= ruleBasicComponent EOF
+            {
+             newCompositeNode(grammarAccess.getBasicComponentRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBasicComponent_in_entryRuleBasicComponent5278);
+            iv_ruleBasicComponent=ruleBasicComponent();
+
+            state._fsp--;
+
+             current =iv_ruleBasicComponent; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBasicComponent5288); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBasicComponent"
+
+
+    // $ANTLR start "ruleBasicComponent"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2424:1: ruleBasicComponent returns [EObject current=null] : (otherlv_0= 'BasicComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'passiveResources' otherlv_36= '{' ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) ) (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )* otherlv_40= '}' )? (otherlv_41= 'fineGrainedBehavior' otherlv_42= '{' ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) ) (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )* otherlv_46= '}' )? otherlv_47= '}' ) ;
+    public final EObject ruleBasicComponent() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        Token otherlv_30=null;
+        Token otherlv_32=null;
+        Token otherlv_34=null;
+        Token otherlv_35=null;
+        Token otherlv_36=null;
+        Token otherlv_38=null;
+        Token otherlv_40=null;
+        Token otherlv_41=null;
+        Token otherlv_42=null;
+        Token otherlv_44=null;
+        Token otherlv_46=null;
+        Token otherlv_47=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_providedRoles_13_0 = null;
+
+        EObject lv_providedRoles_15_0 = null;
+
+        EObject lv_blackBoxBehavior_19_0 = null;
+
+        EObject lv_blackBoxBehavior_21_0 = null;
+
+        EObject lv_requiredRoles_25_0 = null;
+
+        EObject lv_requiredRoles_27_0 = null;
+
+        EObject lv_coarseGrainedBehavior_31_0 = null;
+
+        EObject lv_coarseGrainedBehavior_33_0 = null;
+
+        EObject lv_passiveResources_37_0 = null;
+
+        EObject lv_passiveResources_39_0 = null;
+
+        EObject lv_fineGrainedBehavior_43_0 = null;
+
+        EObject lv_fineGrainedBehavior_45_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2427:28: ( (otherlv_0= 'BasicComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'passiveResources' otherlv_36= '{' ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) ) (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )* otherlv_40= '}' )? (otherlv_41= 'fineGrainedBehavior' otherlv_42= '{' ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) ) (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )* otherlv_46= '}' )? otherlv_47= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2428:1: (otherlv_0= 'BasicComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'passiveResources' otherlv_36= '{' ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) ) (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )* otherlv_40= '}' )? (otherlv_41= 'fineGrainedBehavior' otherlv_42= '{' ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) ) (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )* otherlv_46= '}' )? otherlv_47= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2428:1: (otherlv_0= 'BasicComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'passiveResources' otherlv_36= '{' ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) ) (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )* otherlv_40= '}' )? (otherlv_41= 'fineGrainedBehavior' otherlv_42= '{' ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) ) (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )* otherlv_46= '}' )? otherlv_47= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2428:3: otherlv_0= 'BasicComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'passiveResources' otherlv_36= '{' ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) ) (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )* otherlv_40= '}' )? (otherlv_41= 'fineGrainedBehavior' otherlv_42= '{' ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) ) (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )* otherlv_46= '}' )? otherlv_47= '}'
+            {
+            otherlv_0=(Token)match(input,55,FollowSets000.FOLLOW_55_in_ruleBasicComponent5325); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getBasicComponentAccess().getBasicComponentKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2432:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2433:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2433:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2434:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getBasicComponentAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBasicComponent5346);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBasicComponent5358); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleBasicComponent5370); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getBasicComponentAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2458:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2459:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2459:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2460:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getBasicComponentAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBasicComponent5391);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2476:2: (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )?
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+
+            if ( (LA47_0==25) ) {
+                alt47=1;
+            }
+            switch (alt47) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2476:4: otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')'
+                    {
+                    otherlv_5=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleBasicComponent5404); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getBasicComponentAccess().getRelationshipKeyword_5_0());
+                        
+                    otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleBasicComponent5416); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getBasicComponentAccess().getLeftParenthesisKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2484:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2485:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2485:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2486:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getBasicComponentRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBasicComponent5439);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2499:2: (otherlv_8= ',' ( ( ruleEString ) ) )*
+                    loop46:
+                    do {
+                        int alt46=2;
+                        int LA46_0 = input.LA(1);
+
+                        if ( (LA46_0==15) ) {
+                            alt46=1;
+                        }
+
+
+                        switch (alt46) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2499:4: otherlv_8= ',' ( ( ruleEString ) )
+                    	    {
+                    	    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBasicComponent5452); 
+
+                    	        	newLeafNode(otherlv_8, grammarAccess.getBasicComponentAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2503:1: ( ( ruleEString ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2504:1: ( ruleEString )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2504:1: ( ruleEString )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2505:3: ruleEString
+                    	    {
+
+                    	    			if (current==null) {
+                    	    	            current = createModelElement(grammarAccess.getBasicComponentRule());
+                    	    	        }
+                    	            
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBasicComponent5475);
+                    	    ruleEString();
+
+                    	    state._fsp--;
+
+                    	     
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop46;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleBasicComponent5489); 
+
+                        	newLeafNode(otherlv_10, grammarAccess.getBasicComponentAccess().getRightParenthesisKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2522:3: (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==26) ) {
+                alt49=1;
+            }
+            switch (alt49) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2522:5: otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}'
+                    {
+                    otherlv_11=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleBasicComponent5504); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getBasicComponentAccess().getProvidedRolesKeyword_6_0());
+                        
+                    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBasicComponent5516); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2530:1: ( (lv_providedRoles_13_0= ruleProvidedRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2531:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2531:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2532:3: lv_providedRoles_13_0= ruleProvidedRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleBasicComponent5537);
+                    lv_providedRoles_13_0=ruleProvidedRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"providedRoles",
+                            		lv_providedRoles_13_0, 
+                            		"ProvidedRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2548:2: (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )*
+                    loop48:
+                    do {
+                        int alt48=2;
+                        int LA48_0 = input.LA(1);
+
+                        if ( (LA48_0==15) ) {
+                            alt48=1;
+                        }
+
+
+                        switch (alt48) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2548:4: otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    {
+                    	    otherlv_14=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBasicComponent5550); 
+
+                    	        	newLeafNode(otherlv_14, grammarAccess.getBasicComponentAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2552:1: ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2553:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2553:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2554:3: lv_providedRoles_15_0= ruleProvidedRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleBasicComponent5571);
+                    	    lv_providedRoles_15_0=ruleProvidedRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"providedRoles",
+                    	            		lv_providedRoles_15_0, 
+                    	            		"ProvidedRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop48;
+                        }
+                    } while (true);
+
+                    otherlv_16=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBasicComponent5585); 
+
+                        	newLeafNode(otherlv_16, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2574:3: (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( (LA51_0==27) ) {
+                alt51=1;
+            }
+            switch (alt51) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2574:5: otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleBasicComponent5600); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorKeyword_7_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBasicComponent5612); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_7_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2582:1: ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2583:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2583:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2584:3: lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleBasicComponent5633);
+                    lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"blackBoxBehavior",
+                            		lv_blackBoxBehavior_19_0, 
+                            		"BlackBoxBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2600:2: (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )*
+                    loop50:
+                    do {
+                        int alt50=2;
+                        int LA50_0 = input.LA(1);
+
+                        if ( (LA50_0==15) ) {
+                            alt50=1;
+                        }
+
+
+                        switch (alt50) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2600:4: otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBasicComponent5646); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getBasicComponentAccess().getCommaKeyword_7_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2604:1: ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2605:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2605:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2606:3: lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleBasicComponent5667);
+                    	    lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"blackBoxBehavior",
+                    	            		lv_blackBoxBehavior_21_0, 
+                    	            		"BlackBoxBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop50;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBasicComponent5681); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_7_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2626:3: (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==28) ) {
+                alt53=1;
+            }
+            switch (alt53) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2626:5: otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}'
+                    {
+                    otherlv_23=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleBasicComponent5696); 
+
+                        	newLeafNode(otherlv_23, grammarAccess.getBasicComponentAccess().getRequiredRolesKeyword_8_0());
+                        
+                    otherlv_24=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBasicComponent5708); 
+
+                        	newLeafNode(otherlv_24, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_8_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2634:1: ( (lv_requiredRoles_25_0= ruleRequiredRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2635:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2635:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2636:3: lv_requiredRoles_25_0= ruleRequiredRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleBasicComponent5729);
+                    lv_requiredRoles_25_0=ruleRequiredRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"requiredRoles",
+                            		lv_requiredRoles_25_0, 
+                            		"RequiredRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2652:2: (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )*
+                    loop52:
+                    do {
+                        int alt52=2;
+                        int LA52_0 = input.LA(1);
+
+                        if ( (LA52_0==15) ) {
+                            alt52=1;
+                        }
+
+
+                        switch (alt52) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2652:4: otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    {
+                    	    otherlv_26=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBasicComponent5742); 
+
+                    	        	newLeafNode(otherlv_26, grammarAccess.getBasicComponentAccess().getCommaKeyword_8_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2656:1: ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2657:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2657:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2658:3: lv_requiredRoles_27_0= ruleRequiredRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleBasicComponent5763);
+                    	    lv_requiredRoles_27_0=ruleRequiredRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"requiredRoles",
+                    	            		lv_requiredRoles_27_0, 
+                    	            		"RequiredRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop52;
+                        }
+                    } while (true);
+
+                    otherlv_28=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBasicComponent5777); 
+
+                        	newLeafNode(otherlv_28, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_8_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2678:3: (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )?
+            int alt55=2;
+            int LA55_0 = input.LA(1);
+
+            if ( (LA55_0==29) ) {
+                alt55=1;
+            }
+            switch (alt55) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2678:5: otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}'
+                    {
+                    otherlv_29=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleBasicComponent5792); 
+
+                        	newLeafNode(otherlv_29, grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorKeyword_9_0());
+                        
+                    otherlv_30=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBasicComponent5804); 
+
+                        	newLeafNode(otherlv_30, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_9_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2686:1: ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2687:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2687:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2688:3: lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleBasicComponent5825);
+                    lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"coarseGrainedBehavior",
+                            		lv_coarseGrainedBehavior_31_0, 
+                            		"CoarseGrainedBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2704:2: (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )*
+                    loop54:
+                    do {
+                        int alt54=2;
+                        int LA54_0 = input.LA(1);
+
+                        if ( (LA54_0==15) ) {
+                            alt54=1;
+                        }
+
+
+                        switch (alt54) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2704:4: otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    {
+                    	    otherlv_32=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBasicComponent5838); 
+
+                    	        	newLeafNode(otherlv_32, grammarAccess.getBasicComponentAccess().getCommaKeyword_9_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2708:1: ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2709:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2709:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2710:3: lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleBasicComponent5859);
+                    	    lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"coarseGrainedBehavior",
+                    	            		lv_coarseGrainedBehavior_33_0, 
+                    	            		"CoarseGrainedBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop54;
+                        }
+                    } while (true);
+
+                    otherlv_34=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBasicComponent5873); 
+
+                        	newLeafNode(otherlv_34, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_9_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2730:3: (otherlv_35= 'passiveResources' otherlv_36= '{' ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) ) (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )* otherlv_40= '}' )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
+
+            if ( (LA57_0==56) ) {
+                alt57=1;
+            }
+            switch (alt57) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2730:5: otherlv_35= 'passiveResources' otherlv_36= '{' ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) ) (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )* otherlv_40= '}'
+                    {
+                    otherlv_35=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleBasicComponent5888); 
+
+                        	newLeafNode(otherlv_35, grammarAccess.getBasicComponentAccess().getPassiveResourcesKeyword_10_0());
+                        
+                    otherlv_36=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBasicComponent5900); 
+
+                        	newLeafNode(otherlv_36, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_10_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2738:1: ( (lv_passiveResources_37_0= rulePassiveResourceSpecification ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2739:1: (lv_passiveResources_37_0= rulePassiveResourceSpecification )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2739:1: (lv_passiveResources_37_0= rulePassiveResourceSpecification )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2740:3: lv_passiveResources_37_0= rulePassiveResourceSpecification
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_rulePassiveResourceSpecification_in_ruleBasicComponent5921);
+                    lv_passiveResources_37_0=rulePassiveResourceSpecification();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"passiveResources",
+                            		lv_passiveResources_37_0, 
+                            		"PassiveResourceSpecification");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2756:2: (otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) ) )*
+                    loop56:
+                    do {
+                        int alt56=2;
+                        int LA56_0 = input.LA(1);
+
+                        if ( (LA56_0==15) ) {
+                            alt56=1;
+                        }
+
+
+                        switch (alt56) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2756:4: otherlv_38= ',' ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) )
+                    	    {
+                    	    otherlv_38=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBasicComponent5934); 
+
+                    	        	newLeafNode(otherlv_38, grammarAccess.getBasicComponentAccess().getCommaKeyword_10_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2760:1: ( (lv_passiveResources_39_0= rulePassiveResourceSpecification ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2761:1: (lv_passiveResources_39_0= rulePassiveResourceSpecification )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2761:1: (lv_passiveResources_39_0= rulePassiveResourceSpecification )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2762:3: lv_passiveResources_39_0= rulePassiveResourceSpecification
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_rulePassiveResourceSpecification_in_ruleBasicComponent5955);
+                    	    lv_passiveResources_39_0=rulePassiveResourceSpecification();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"passiveResources",
+                    	            		lv_passiveResources_39_0, 
+                    	            		"PassiveResourceSpecification");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop56;
+                        }
+                    } while (true);
+
+                    otherlv_40=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBasicComponent5969); 
+
+                        	newLeafNode(otherlv_40, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_10_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2782:3: (otherlv_41= 'fineGrainedBehavior' otherlv_42= '{' ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) ) (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )* otherlv_46= '}' )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
+
+            if ( (LA59_0==57) ) {
+                alt59=1;
+            }
+            switch (alt59) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2782:5: otherlv_41= 'fineGrainedBehavior' otherlv_42= '{' ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) ) (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )* otherlv_46= '}'
+                    {
+                    otherlv_41=(Token)match(input,57,FollowSets000.FOLLOW_57_in_ruleBasicComponent5984); 
+
+                        	newLeafNode(otherlv_41, grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorKeyword_11_0());
+                        
+                    otherlv_42=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBasicComponent5996); 
+
+                        	newLeafNode(otherlv_42, grammarAccess.getBasicComponentAccess().getLeftCurlyBracketKeyword_11_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2790:1: ( (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2791:1: (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2791:1: (lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2792:3: lv_fineGrainedBehavior_43_0= ruleFineGrainedBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleFineGrainedBehavior_in_ruleBasicComponent6017);
+                    lv_fineGrainedBehavior_43_0=ruleFineGrainedBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"fineGrainedBehavior",
+                            		lv_fineGrainedBehavior_43_0, 
+                            		"FineGrainedBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2808:2: (otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) ) )*
+                    loop58:
+                    do {
+                        int alt58=2;
+                        int LA58_0 = input.LA(1);
+
+                        if ( (LA58_0==15) ) {
+                            alt58=1;
+                        }
+
+
+                        switch (alt58) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2808:4: otherlv_44= ',' ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) )
+                    	    {
+                    	    otherlv_44=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBasicComponent6030); 
+
+                    	        	newLeafNode(otherlv_44, grammarAccess.getBasicComponentAccess().getCommaKeyword_11_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2812:1: ( (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2813:1: (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2813:1: (lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2814:3: lv_fineGrainedBehavior_45_0= ruleFineGrainedBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBasicComponentAccess().getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleFineGrainedBehavior_in_ruleBasicComponent6051);
+                    	    lv_fineGrainedBehavior_45_0=ruleFineGrainedBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBasicComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"fineGrainedBehavior",
+                    	            		lv_fineGrainedBehavior_45_0, 
+                    	            		"FineGrainedBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop58;
+                        }
+                    } while (true);
+
+                    otherlv_46=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBasicComponent6065); 
+
+                        	newLeafNode(otherlv_46, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_11_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_47=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBasicComponent6079); 
+
+                	newLeafNode(otherlv_47, grammarAccess.getBasicComponentAccess().getRightCurlyBracketKeyword_12());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBasicComponent"
+
+
+    // $ANTLR start "entryRuleCompositeComponent"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2846:1: entryRuleCompositeComponent returns [EObject current=null] : iv_ruleCompositeComponent= ruleCompositeComponent EOF ;
+    public final EObject entryRuleCompositeComponent() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCompositeComponent = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2847:2: (iv_ruleCompositeComponent= ruleCompositeComponent EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2848:2: iv_ruleCompositeComponent= ruleCompositeComponent EOF
+            {
+             newCompositeNode(grammarAccess.getCompositeComponentRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCompositeComponent_in_entryRuleCompositeComponent6115);
+            iv_ruleCompositeComponent=ruleCompositeComponent();
+
+            state._fsp--;
+
+             current =iv_ruleCompositeComponent; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompositeComponent6125); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCompositeComponent"
+
+
+    // $ANTLR start "ruleCompositeComponent"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2855:1: ruleCompositeComponent returns [EObject current=null] : (otherlv_0= 'CompositeComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' ) ;
+    public final EObject ruleCompositeComponent() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        Token otherlv_30=null;
+        Token otherlv_32=null;
+        Token otherlv_34=null;
+        Token otherlv_35=null;
+        Token otherlv_36=null;
+        Token otherlv_38=null;
+        Token otherlv_40=null;
+        Token otherlv_41=null;
+        Token otherlv_42=null;
+        Token otherlv_44=null;
+        Token otherlv_46=null;
+        Token otherlv_47=null;
+        Token otherlv_48=null;
+        Token otherlv_50=null;
+        Token otherlv_52=null;
+        Token otherlv_53=null;
+        Token otherlv_54=null;
+        Token otherlv_56=null;
+        Token otherlv_58=null;
+        Token otherlv_59=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_providedRoles_13_0 = null;
+
+        EObject lv_providedRoles_15_0 = null;
+
+        EObject lv_blackBoxBehavior_19_0 = null;
+
+        EObject lv_blackBoxBehavior_21_0 = null;
+
+        EObject lv_requiredRoles_25_0 = null;
+
+        EObject lv_requiredRoles_27_0 = null;
+
+        EObject lv_coarseGrainedBehavior_31_0 = null;
+
+        EObject lv_coarseGrainedBehavior_33_0 = null;
+
+        EObject lv_assemblyContexts_37_0 = null;
+
+        EObject lv_assemblyContexts_39_0 = null;
+
+        EObject lv_assemblyConnectors_43_0 = null;
+
+        EObject lv_assemblyConnectors_45_0 = null;
+
+        EObject lv_providedDelegationConnectors_49_0 = null;
+
+        EObject lv_providedDelegationConnectors_51_0 = null;
+
+        EObject lv_requiredDelegationConnectors_55_0 = null;
+
+        EObject lv_requiredDelegationConnectors_57_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2858:28: ( (otherlv_0= 'CompositeComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2859:1: (otherlv_0= 'CompositeComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2859:1: (otherlv_0= 'CompositeComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2859:3: otherlv_0= 'CompositeComponent' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}'
+            {
+            otherlv_0=(Token)match(input,58,FollowSets000.FOLLOW_58_in_ruleCompositeComponent6162); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCompositeComponentAccess().getCompositeComponentKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2863:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2864:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2864:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2865:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeComponent6183);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6195); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleCompositeComponent6207); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getCompositeComponentAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2889:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2890:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2890:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2891:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeComponent6228);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2907:2: (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==25) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2907:4: otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')'
+                    {
+                    otherlv_5=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleCompositeComponent6241); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getCompositeComponentAccess().getRelationshipKeyword_5_0());
+                        
+                    otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleCompositeComponent6253); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getCompositeComponentAccess().getLeftParenthesisKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2915:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2916:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2916:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2917:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getCompositeComponentRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeComponent6276);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2930:2: (otherlv_8= ',' ( ( ruleEString ) ) )*
+                    loop60:
+                    do {
+                        int alt60=2;
+                        int LA60_0 = input.LA(1);
+
+                        if ( (LA60_0==15) ) {
+                            alt60=1;
+                        }
+
+
+                        switch (alt60) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2930:4: otherlv_8= ',' ( ( ruleEString ) )
+                    	    {
+                    	    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6289); 
+
+                    	        	newLeafNode(otherlv_8, grammarAccess.getCompositeComponentAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2934:1: ( ( ruleEString ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2935:1: ( ruleEString )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2935:1: ( ruleEString )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2936:3: ruleEString
+                    	    {
+
+                    	    			if (current==null) {
+                    	    	            current = createModelElement(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	            
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCompositeComponent6312);
+                    	    ruleEString();
+
+                    	    state._fsp--;
+
+                    	     
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop60;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleCompositeComponent6326); 
+
+                        	newLeafNode(otherlv_10, grammarAccess.getCompositeComponentAccess().getRightParenthesisKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2953:3: (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
+
+            if ( (LA63_0==26) ) {
+                alt63=1;
+            }
+            switch (alt63) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2953:5: otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}'
+                    {
+                    otherlv_11=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleCompositeComponent6341); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getCompositeComponentAccess().getProvidedRolesKeyword_6_0());
+                        
+                    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6353); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2961:1: ( (lv_providedRoles_13_0= ruleProvidedRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2962:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2962:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2963:3: lv_providedRoles_13_0= ruleProvidedRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleCompositeComponent6374);
+                    lv_providedRoles_13_0=ruleProvidedRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"providedRoles",
+                            		lv_providedRoles_13_0, 
+                            		"ProvidedRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2979:2: (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )*
+                    loop62:
+                    do {
+                        int alt62=2;
+                        int LA62_0 = input.LA(1);
+
+                        if ( (LA62_0==15) ) {
+                            alt62=1;
+                        }
+
+
+                        switch (alt62) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2979:4: otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    {
+                    	    otherlv_14=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6387); 
+
+                    	        	newLeafNode(otherlv_14, grammarAccess.getCompositeComponentAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2983:1: ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2984:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2984:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:2985:3: lv_providedRoles_15_0= ruleProvidedRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleCompositeComponent6408);
+                    	    lv_providedRoles_15_0=ruleProvidedRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"providedRoles",
+                    	            		lv_providedRoles_15_0, 
+                    	            		"ProvidedRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop62;
+                        }
+                    } while (true);
+
+                    otherlv_16=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent6422); 
+
+                        	newLeafNode(otherlv_16, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3005:3: (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
+
+            if ( (LA65_0==27) ) {
+                alt65=1;
+            }
+            switch (alt65) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3005:5: otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleCompositeComponent6437); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorKeyword_7_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6449); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_7_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3013:1: ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3014:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3014:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3015:3: lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleCompositeComponent6470);
+                    lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"blackBoxBehavior",
+                            		lv_blackBoxBehavior_19_0, 
+                            		"BlackBoxBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3031:2: (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )*
+                    loop64:
+                    do {
+                        int alt64=2;
+                        int LA64_0 = input.LA(1);
+
+                        if ( (LA64_0==15) ) {
+                            alt64=1;
+                        }
+
+
+                        switch (alt64) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3031:4: otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6483); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getCompositeComponentAccess().getCommaKeyword_7_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3035:1: ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3036:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3036:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3037:3: lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleCompositeComponent6504);
+                    	    lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"blackBoxBehavior",
+                    	            		lv_blackBoxBehavior_21_0, 
+                    	            		"BlackBoxBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop64;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent6518); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_7_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3057:3: (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==28) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3057:5: otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}'
+                    {
+                    otherlv_23=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleCompositeComponent6533); 
+
+                        	newLeafNode(otherlv_23, grammarAccess.getCompositeComponentAccess().getRequiredRolesKeyword_8_0());
+                        
+                    otherlv_24=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6545); 
+
+                        	newLeafNode(otherlv_24, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_8_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3065:1: ( (lv_requiredRoles_25_0= ruleRequiredRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3066:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3066:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3067:3: lv_requiredRoles_25_0= ruleRequiredRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleCompositeComponent6566);
+                    lv_requiredRoles_25_0=ruleRequiredRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"requiredRoles",
+                            		lv_requiredRoles_25_0, 
+                            		"RequiredRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3083:2: (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )*
+                    loop66:
+                    do {
+                        int alt66=2;
+                        int LA66_0 = input.LA(1);
+
+                        if ( (LA66_0==15) ) {
+                            alt66=1;
+                        }
+
+
+                        switch (alt66) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3083:4: otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    {
+                    	    otherlv_26=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6579); 
+
+                    	        	newLeafNode(otherlv_26, grammarAccess.getCompositeComponentAccess().getCommaKeyword_8_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3087:1: ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3088:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3088:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3089:3: lv_requiredRoles_27_0= ruleRequiredRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleCompositeComponent6600);
+                    	    lv_requiredRoles_27_0=ruleRequiredRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"requiredRoles",
+                    	            		lv_requiredRoles_27_0, 
+                    	            		"RequiredRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop66;
+                        }
+                    } while (true);
+
+                    otherlv_28=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent6614); 
+
+                        	newLeafNode(otherlv_28, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_8_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3109:3: (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( (LA69_0==29) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3109:5: otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}'
+                    {
+                    otherlv_29=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleCompositeComponent6629); 
+
+                        	newLeafNode(otherlv_29, grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorKeyword_9_0());
+                        
+                    otherlv_30=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6641); 
+
+                        	newLeafNode(otherlv_30, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_9_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3117:1: ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3118:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3118:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3119:3: lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleCompositeComponent6662);
+                    lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"coarseGrainedBehavior",
+                            		lv_coarseGrainedBehavior_31_0, 
+                            		"CoarseGrainedBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3135:2: (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )*
+                    loop68:
+                    do {
+                        int alt68=2;
+                        int LA68_0 = input.LA(1);
+
+                        if ( (LA68_0==15) ) {
+                            alt68=1;
+                        }
+
+
+                        switch (alt68) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3135:4: otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    {
+                    	    otherlv_32=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6675); 
+
+                    	        	newLeafNode(otherlv_32, grammarAccess.getCompositeComponentAccess().getCommaKeyword_9_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3139:1: ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3140:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3140:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3141:3: lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleCompositeComponent6696);
+                    	    lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"coarseGrainedBehavior",
+                    	            		lv_coarseGrainedBehavior_33_0, 
+                    	            		"CoarseGrainedBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop68;
+                        }
+                    } while (true);
+
+                    otherlv_34=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent6710); 
+
+                        	newLeafNode(otherlv_34, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_9_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3161:3: (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
+
+            if ( (LA71_0==59) ) {
+                alt71=1;
+            }
+            switch (alt71) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3161:5: otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}'
+                    {
+                    otherlv_35=(Token)match(input,59,FollowSets000.FOLLOW_59_in_ruleCompositeComponent6725); 
+
+                        	newLeafNode(otherlv_35, grammarAccess.getCompositeComponentAccess().getAssemblyContextsKeyword_10_0());
+                        
+                    otherlv_36=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6737); 
+
+                        	newLeafNode(otherlv_36, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_10_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3169:1: ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3170:1: (lv_assemblyContexts_37_0= ruleAssemblyContext )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3170:1: (lv_assemblyContexts_37_0= ruleAssemblyContext )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3171:3: lv_assemblyContexts_37_0= ruleAssemblyContext
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleAssemblyContext_in_ruleCompositeComponent6758);
+                    lv_assemblyContexts_37_0=ruleAssemblyContext();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"assemblyContexts",
+                            		lv_assemblyContexts_37_0, 
+                            		"AssemblyContext");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3187:2: (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )*
+                    loop70:
+                    do {
+                        int alt70=2;
+                        int LA70_0 = input.LA(1);
+
+                        if ( (LA70_0==15) ) {
+                            alt70=1;
+                        }
+
+
+                        switch (alt70) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3187:4: otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) )
+                    	    {
+                    	    otherlv_38=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6771); 
+
+                    	        	newLeafNode(otherlv_38, grammarAccess.getCompositeComponentAccess().getCommaKeyword_10_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3191:1: ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3192:1: (lv_assemblyContexts_39_0= ruleAssemblyContext )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3192:1: (lv_assemblyContexts_39_0= ruleAssemblyContext )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3193:3: lv_assemblyContexts_39_0= ruleAssemblyContext
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleAssemblyContext_in_ruleCompositeComponent6792);
+                    	    lv_assemblyContexts_39_0=ruleAssemblyContext();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"assemblyContexts",
+                    	            		lv_assemblyContexts_39_0, 
+                    	            		"AssemblyContext");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop70;
+                        }
+                    } while (true);
+
+                    otherlv_40=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent6806); 
+
+                        	newLeafNode(otherlv_40, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_10_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3213:3: (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )?
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+
+            if ( (LA73_0==60) ) {
+                alt73=1;
+            }
+            switch (alt73) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3213:5: otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}'
+                    {
+                    otherlv_41=(Token)match(input,60,FollowSets000.FOLLOW_60_in_ruleCompositeComponent6821); 
+
+                        	newLeafNode(otherlv_41, grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsKeyword_11_0());
+                        
+                    otherlv_42=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6833); 
+
+                        	newLeafNode(otherlv_42, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_11_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3221:1: ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3222:1: (lv_assemblyConnectors_43_0= ruleAssemblyConnector )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3222:1: (lv_assemblyConnectors_43_0= ruleAssemblyConnector )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3223:3: lv_assemblyConnectors_43_0= ruleAssemblyConnector
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleAssemblyConnector_in_ruleCompositeComponent6854);
+                    lv_assemblyConnectors_43_0=ruleAssemblyConnector();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"assemblyConnectors",
+                            		lv_assemblyConnectors_43_0, 
+                            		"AssemblyConnector");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3239:2: (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )*
+                    loop72:
+                    do {
+                        int alt72=2;
+                        int LA72_0 = input.LA(1);
+
+                        if ( (LA72_0==15) ) {
+                            alt72=1;
+                        }
+
+
+                        switch (alt72) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3239:4: otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) )
+                    	    {
+                    	    otherlv_44=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6867); 
+
+                    	        	newLeafNode(otherlv_44, grammarAccess.getCompositeComponentAccess().getCommaKeyword_11_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3243:1: ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3244:1: (lv_assemblyConnectors_45_0= ruleAssemblyConnector )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3244:1: (lv_assemblyConnectors_45_0= ruleAssemblyConnector )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3245:3: lv_assemblyConnectors_45_0= ruleAssemblyConnector
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleAssemblyConnector_in_ruleCompositeComponent6888);
+                    	    lv_assemblyConnectors_45_0=ruleAssemblyConnector();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"assemblyConnectors",
+                    	            		lv_assemblyConnectors_45_0, 
+                    	            		"AssemblyConnector");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop72;
+                        }
+                    } while (true);
+
+                    otherlv_46=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent6902); 
+
+                        	newLeafNode(otherlv_46, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_11_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3265:3: (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
+
+            if ( (LA75_0==61) ) {
+                alt75=1;
+            }
+            switch (alt75) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3265:5: otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}'
+                    {
+                    otherlv_47=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleCompositeComponent6917); 
+
+                        	newLeafNode(otherlv_47, grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsKeyword_12_0());
+                        
+                    otherlv_48=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent6929); 
+
+                        	newLeafNode(otherlv_48, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_12_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3273:1: ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3274:1: (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3274:1: (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3275:3: lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleProvidedDelegationConnector_in_ruleCompositeComponent6950);
+                    lv_providedDelegationConnectors_49_0=ruleProvidedDelegationConnector();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"providedDelegationConnectors",
+                            		lv_providedDelegationConnectors_49_0, 
+                            		"ProvidedDelegationConnector");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3291:2: (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )*
+                    loop74:
+                    do {
+                        int alt74=2;
+                        int LA74_0 = input.LA(1);
+
+                        if ( (LA74_0==15) ) {
+                            alt74=1;
+                        }
+
+
+                        switch (alt74) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3291:4: otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) )
+                    	    {
+                    	    otherlv_50=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent6963); 
+
+                    	        	newLeafNode(otherlv_50, grammarAccess.getCompositeComponentAccess().getCommaKeyword_12_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3295:1: ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3296:1: (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3296:1: (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3297:3: lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleProvidedDelegationConnector_in_ruleCompositeComponent6984);
+                    	    lv_providedDelegationConnectors_51_0=ruleProvidedDelegationConnector();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"providedDelegationConnectors",
+                    	            		lv_providedDelegationConnectors_51_0, 
+                    	            		"ProvidedDelegationConnector");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop74;
+                        }
+                    } while (true);
+
+                    otherlv_52=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent6998); 
+
+                        	newLeafNode(otherlv_52, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_12_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3317:3: (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )?
+            int alt77=2;
+            int LA77_0 = input.LA(1);
+
+            if ( (LA77_0==62) ) {
+                alt77=1;
+            }
+            switch (alt77) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3317:5: otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}'
+                    {
+                    otherlv_53=(Token)match(input,62,FollowSets000.FOLLOW_62_in_ruleCompositeComponent7013); 
+
+                        	newLeafNode(otherlv_53, grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsKeyword_13_0());
+                        
+                    otherlv_54=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCompositeComponent7025); 
+
+                        	newLeafNode(otherlv_54, grammarAccess.getCompositeComponentAccess().getLeftCurlyBracketKeyword_13_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3325:1: ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3326:1: (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3326:1: (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3327:3: lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleRequiredDelegationConnector_in_ruleCompositeComponent7046);
+                    lv_requiredDelegationConnectors_55_0=ruleRequiredDelegationConnector();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"requiredDelegationConnectors",
+                            		lv_requiredDelegationConnectors_55_0, 
+                            		"RequiredDelegationConnector");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3343:2: (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )*
+                    loop76:
+                    do {
+                        int alt76=2;
+                        int LA76_0 = input.LA(1);
+
+                        if ( (LA76_0==15) ) {
+                            alt76=1;
+                        }
+
+
+                        switch (alt76) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3343:4: otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) )
+                    	    {
+                    	    otherlv_56=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleCompositeComponent7059); 
+
+                    	        	newLeafNode(otherlv_56, grammarAccess.getCompositeComponentAccess().getCommaKeyword_13_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3347:1: ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3348:1: (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3348:1: (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3349:3: lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getCompositeComponentAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleRequiredDelegationConnector_in_ruleCompositeComponent7080);
+                    	    lv_requiredDelegationConnectors_57_0=ruleRequiredDelegationConnector();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getCompositeComponentRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"requiredDelegationConnectors",
+                    	            		lv_requiredDelegationConnectors_57_0, 
+                    	            		"RequiredDelegationConnector");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop76;
+                        }
+                    } while (true);
+
+                    otherlv_58=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent7094); 
+
+                        	newLeafNode(otherlv_58, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_13_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_59=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCompositeComponent7108); 
+
+                	newLeafNode(otherlv_59, grammarAccess.getCompositeComponentAccess().getRightCurlyBracketKeyword_14());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCompositeComponent"
+
+
+    // $ANTLR start "entryRuleSubSystem"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3381:1: entryRuleSubSystem returns [EObject current=null] : iv_ruleSubSystem= ruleSubSystem EOF ;
+    public final EObject entryRuleSubSystem() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSubSystem = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3382:2: (iv_ruleSubSystem= ruleSubSystem EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3383:2: iv_ruleSubSystem= ruleSubSystem EOF
+            {
+             newCompositeNode(grammarAccess.getSubSystemRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSubSystem_in_entryRuleSubSystem7144);
+            iv_ruleSubSystem=ruleSubSystem();
+
+            state._fsp--;
+
+             current =iv_ruleSubSystem; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSubSystem7154); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSubSystem"
+
+
+    // $ANTLR start "ruleSubSystem"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3390:1: ruleSubSystem returns [EObject current=null] : (otherlv_0= 'SubSystem' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' ) ;
+    public final EObject ruleSubSystem() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        Token otherlv_30=null;
+        Token otherlv_32=null;
+        Token otherlv_34=null;
+        Token otherlv_35=null;
+        Token otherlv_36=null;
+        Token otherlv_38=null;
+        Token otherlv_40=null;
+        Token otherlv_41=null;
+        Token otherlv_42=null;
+        Token otherlv_44=null;
+        Token otherlv_46=null;
+        Token otherlv_47=null;
+        Token otherlv_48=null;
+        Token otherlv_50=null;
+        Token otherlv_52=null;
+        Token otherlv_53=null;
+        Token otherlv_54=null;
+        Token otherlv_56=null;
+        Token otherlv_58=null;
+        Token otherlv_59=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_providedRoles_13_0 = null;
+
+        EObject lv_providedRoles_15_0 = null;
+
+        EObject lv_blackBoxBehavior_19_0 = null;
+
+        EObject lv_blackBoxBehavior_21_0 = null;
+
+        EObject lv_requiredRoles_25_0 = null;
+
+        EObject lv_requiredRoles_27_0 = null;
+
+        EObject lv_coarseGrainedBehavior_31_0 = null;
+
+        EObject lv_coarseGrainedBehavior_33_0 = null;
+
+        EObject lv_assemblyContexts_37_0 = null;
+
+        EObject lv_assemblyContexts_39_0 = null;
+
+        EObject lv_assemblyConnectors_43_0 = null;
+
+        EObject lv_assemblyConnectors_45_0 = null;
+
+        EObject lv_providedDelegationConnectors_49_0 = null;
+
+        EObject lv_providedDelegationConnectors_51_0 = null;
+
+        EObject lv_requiredDelegationConnectors_55_0 = null;
+
+        EObject lv_requiredDelegationConnectors_57_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3393:28: ( (otherlv_0= 'SubSystem' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3394:1: (otherlv_0= 'SubSystem' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3394:1: (otherlv_0= 'SubSystem' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3394:3: otherlv_0= 'SubSystem' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )? (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )? (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )? (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )? (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )? (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )? (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )? (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )? (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )? otherlv_59= '}'
+            {
+            otherlv_0=(Token)match(input,63,FollowSets000.FOLLOW_63_in_ruleSubSystem7191); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getSubSystemAccess().getSubSystemKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3398:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3399:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3399:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3400:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getSubSystemAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSubSystem7212);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7224); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleSubSystem7236); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getSubSystemAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3424:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3425:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3425:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3426:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getSubSystemAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSubSystem7257);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3442:2: (otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')' )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( (LA79_0==25) ) {
+                alt79=1;
+            }
+            switch (alt79) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3442:4: otherlv_5= 'relationship' otherlv_6= '(' ( ( ruleEString ) ) (otherlv_8= ',' ( ( ruleEString ) ) )* otherlv_10= ')'
+                    {
+                    otherlv_5=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleSubSystem7270); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getSubSystemAccess().getRelationshipKeyword_5_0());
+                        
+                    otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleSubSystem7282); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getSubSystemAccess().getLeftParenthesisKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3450:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3451:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3451:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3452:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getSubSystemRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSubSystem7305);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3465:2: (otherlv_8= ',' ( ( ruleEString ) ) )*
+                    loop78:
+                    do {
+                        int alt78=2;
+                        int LA78_0 = input.LA(1);
+
+                        if ( (LA78_0==15) ) {
+                            alt78=1;
+                        }
+
+
+                        switch (alt78) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3465:4: otherlv_8= ',' ( ( ruleEString ) )
+                    	    {
+                    	    otherlv_8=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7318); 
+
+                    	        	newLeafNode(otherlv_8, grammarAccess.getSubSystemAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3469:1: ( ( ruleEString ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3470:1: ( ruleEString )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3470:1: ( ruleEString )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3471:3: ruleEString
+                    	    {
+
+                    	    			if (current==null) {
+                    	    	            current = createModelElement(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	            
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getRelationshipRelationshipCrossReference_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSubSystem7341);
+                    	    ruleEString();
+
+                    	    state._fsp--;
+
+                    	     
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop78;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleSubSystem7355); 
+
+                        	newLeafNode(otherlv_10, grammarAccess.getSubSystemAccess().getRightParenthesisKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3488:3: (otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}' )?
+            int alt81=2;
+            int LA81_0 = input.LA(1);
+
+            if ( (LA81_0==26) ) {
+                alt81=1;
+            }
+            switch (alt81) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3488:5: otherlv_11= 'providedRoles' otherlv_12= '{' ( (lv_providedRoles_13_0= ruleProvidedRole ) ) (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )* otherlv_16= '}'
+                    {
+                    otherlv_11=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleSubSystem7370); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getSubSystemAccess().getProvidedRolesKeyword_6_0());
+                        
+                    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7382); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3496:1: ( (lv_providedRoles_13_0= ruleProvidedRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3497:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3497:1: (lv_providedRoles_13_0= ruleProvidedRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3498:3: lv_providedRoles_13_0= ruleProvidedRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedRolesProvidedRoleParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleSubSystem7403);
+                    lv_providedRoles_13_0=ruleProvidedRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"providedRoles",
+                            		lv_providedRoles_13_0, 
+                            		"ProvidedRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3514:2: (otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) ) )*
+                    loop80:
+                    do {
+                        int alt80=2;
+                        int LA80_0 = input.LA(1);
+
+                        if ( (LA80_0==15) ) {
+                            alt80=1;
+                        }
+
+
+                        switch (alt80) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3514:4: otherlv_14= ',' ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    {
+                    	    otherlv_14=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7416); 
+
+                    	        	newLeafNode(otherlv_14, grammarAccess.getSubSystemAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3518:1: ( (lv_providedRoles_15_0= ruleProvidedRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3519:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3519:1: (lv_providedRoles_15_0= ruleProvidedRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3520:3: lv_providedRoles_15_0= ruleProvidedRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleProvidedRole_in_ruleSubSystem7437);
+                    	    lv_providedRoles_15_0=ruleProvidedRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"providedRoles",
+                    	            		lv_providedRoles_15_0, 
+                    	            		"ProvidedRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop80;
+                        }
+                    } while (true);
+
+                    otherlv_16=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem7451); 
+
+                        	newLeafNode(otherlv_16, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3540:3: (otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}' )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
+
+            if ( (LA83_0==27) ) {
+                alt83=1;
+            }
+            switch (alt83) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3540:5: otherlv_17= 'blackBoxBehavior' otherlv_18= '{' ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) ) (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleSubSystem7466); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getSubSystemAccess().getBlackBoxBehaviorKeyword_7_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7478); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_7_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3548:1: ( (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3549:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3549:1: (lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3550:3: lv_blackBoxBehavior_19_0= ruleBlackBoxBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleSubSystem7499);
+                    lv_blackBoxBehavior_19_0=ruleBlackBoxBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"blackBoxBehavior",
+                            		lv_blackBoxBehavior_19_0, 
+                            		"BlackBoxBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3566:2: (otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) ) )*
+                    loop82:
+                    do {
+                        int alt82=2;
+                        int LA82_0 = input.LA(1);
+
+                        if ( (LA82_0==15) ) {
+                            alt82=1;
+                        }
+
+
+                        switch (alt82) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3566:4: otherlv_20= ',' ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7512); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getSubSystemAccess().getCommaKeyword_7_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3570:1: ( (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3571:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3571:1: (lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3572:3: lv_blackBoxBehavior_21_0= ruleBlackBoxBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlackBoxBehavior_in_ruleSubSystem7533);
+                    	    lv_blackBoxBehavior_21_0=ruleBlackBoxBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"blackBoxBehavior",
+                    	            		lv_blackBoxBehavior_21_0, 
+                    	            		"BlackBoxBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop82;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem7547); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_7_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3592:3: (otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}' )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
+
+            if ( (LA85_0==28) ) {
+                alt85=1;
+            }
+            switch (alt85) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3592:5: otherlv_23= 'requiredRoles' otherlv_24= '{' ( (lv_requiredRoles_25_0= ruleRequiredRole ) ) (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )* otherlv_28= '}'
+                    {
+                    otherlv_23=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleSubSystem7562); 
+
+                        	newLeafNode(otherlv_23, grammarAccess.getSubSystemAccess().getRequiredRolesKeyword_8_0());
+                        
+                    otherlv_24=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7574); 
+
+                        	newLeafNode(otherlv_24, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_8_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3600:1: ( (lv_requiredRoles_25_0= ruleRequiredRole ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3601:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3601:1: (lv_requiredRoles_25_0= ruleRequiredRole )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3602:3: lv_requiredRoles_25_0= ruleRequiredRole
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredRolesRequiredRoleParserRuleCall_8_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleSubSystem7595);
+                    lv_requiredRoles_25_0=ruleRequiredRole();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"requiredRoles",
+                            		lv_requiredRoles_25_0, 
+                            		"RequiredRole");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3618:2: (otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) ) )*
+                    loop84:
+                    do {
+                        int alt84=2;
+                        int LA84_0 = input.LA(1);
+
+                        if ( (LA84_0==15) ) {
+                            alt84=1;
+                        }
+
+
+                        switch (alt84) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3618:4: otherlv_26= ',' ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    {
+                    	    otherlv_26=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7608); 
+
+                    	        	newLeafNode(otherlv_26, grammarAccess.getSubSystemAccess().getCommaKeyword_8_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3622:1: ( (lv_requiredRoles_27_0= ruleRequiredRole ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3623:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3623:1: (lv_requiredRoles_27_0= ruleRequiredRole )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3624:3: lv_requiredRoles_27_0= ruleRequiredRole
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleRequiredRole_in_ruleSubSystem7629);
+                    	    lv_requiredRoles_27_0=ruleRequiredRole();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"requiredRoles",
+                    	            		lv_requiredRoles_27_0, 
+                    	            		"RequiredRole");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop84;
+                        }
+                    } while (true);
+
+                    otherlv_28=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem7643); 
+
+                        	newLeafNode(otherlv_28, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_8_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3644:3: (otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}' )?
+            int alt87=2;
+            int LA87_0 = input.LA(1);
+
+            if ( (LA87_0==29) ) {
+                alt87=1;
+            }
+            switch (alt87) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3644:5: otherlv_29= 'coarseGrainedBehavior' otherlv_30= '{' ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) ) (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )* otherlv_34= '}'
+                    {
+                    otherlv_29=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleSubSystem7658); 
+
+                        	newLeafNode(otherlv_29, grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorKeyword_9_0());
+                        
+                    otherlv_30=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7670); 
+
+                        	newLeafNode(otherlv_30, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_9_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3652:1: ( (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3653:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3653:1: (lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3654:3: lv_coarseGrainedBehavior_31_0= ruleCoarseGrainedBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleSubSystem7691);
+                    lv_coarseGrainedBehavior_31_0=ruleCoarseGrainedBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"coarseGrainedBehavior",
+                            		lv_coarseGrainedBehavior_31_0, 
+                            		"CoarseGrainedBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3670:2: (otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) ) )*
+                    loop86:
+                    do {
+                        int alt86=2;
+                        int LA86_0 = input.LA(1);
+
+                        if ( (LA86_0==15) ) {
+                            alt86=1;
+                        }
+
+
+                        switch (alt86) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3670:4: otherlv_32= ',' ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    {
+                    	    otherlv_32=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7704); 
+
+                    	        	newLeafNode(otherlv_32, grammarAccess.getSubSystemAccess().getCommaKeyword_9_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3674:1: ( (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3675:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3675:1: (lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3676:3: lv_coarseGrainedBehavior_33_0= ruleCoarseGrainedBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleCoarseGrainedBehavior_in_ruleSubSystem7725);
+                    	    lv_coarseGrainedBehavior_33_0=ruleCoarseGrainedBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"coarseGrainedBehavior",
+                    	            		lv_coarseGrainedBehavior_33_0, 
+                    	            		"CoarseGrainedBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop86;
+                        }
+                    } while (true);
+
+                    otherlv_34=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem7739); 
+
+                        	newLeafNode(otherlv_34, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_9_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3696:3: (otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}' )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
+
+            if ( (LA89_0==59) ) {
+                alt89=1;
+            }
+            switch (alt89) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3696:5: otherlv_35= 'assemblyContexts' otherlv_36= '{' ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) ) (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )* otherlv_40= '}'
+                    {
+                    otherlv_35=(Token)match(input,59,FollowSets000.FOLLOW_59_in_ruleSubSystem7754); 
+
+                        	newLeafNode(otherlv_35, grammarAccess.getSubSystemAccess().getAssemblyContextsKeyword_10_0());
+                        
+                    otherlv_36=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7766); 
+
+                        	newLeafNode(otherlv_36, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_10_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3704:1: ( (lv_assemblyContexts_37_0= ruleAssemblyContext ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3705:1: (lv_assemblyContexts_37_0= ruleAssemblyContext )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3705:1: (lv_assemblyContexts_37_0= ruleAssemblyContext )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3706:3: lv_assemblyContexts_37_0= ruleAssemblyContext
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleAssemblyContext_in_ruleSubSystem7787);
+                    lv_assemblyContexts_37_0=ruleAssemblyContext();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"assemblyContexts",
+                            		lv_assemblyContexts_37_0, 
+                            		"AssemblyContext");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3722:2: (otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) ) )*
+                    loop88:
+                    do {
+                        int alt88=2;
+                        int LA88_0 = input.LA(1);
+
+                        if ( (LA88_0==15) ) {
+                            alt88=1;
+                        }
+
+
+                        switch (alt88) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3722:4: otherlv_38= ',' ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) )
+                    	    {
+                    	    otherlv_38=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7800); 
+
+                    	        	newLeafNode(otherlv_38, grammarAccess.getSubSystemAccess().getCommaKeyword_10_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3726:1: ( (lv_assemblyContexts_39_0= ruleAssemblyContext ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3727:1: (lv_assemblyContexts_39_0= ruleAssemblyContext )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3727:1: (lv_assemblyContexts_39_0= ruleAssemblyContext )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3728:3: lv_assemblyContexts_39_0= ruleAssemblyContext
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleAssemblyContext_in_ruleSubSystem7821);
+                    	    lv_assemblyContexts_39_0=ruleAssemblyContext();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"assemblyContexts",
+                    	            		lv_assemblyContexts_39_0, 
+                    	            		"AssemblyContext");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop88;
+                        }
+                    } while (true);
+
+                    otherlv_40=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem7835); 
+
+                        	newLeafNode(otherlv_40, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_10_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3748:3: (otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}' )?
+            int alt91=2;
+            int LA91_0 = input.LA(1);
+
+            if ( (LA91_0==60) ) {
+                alt91=1;
+            }
+            switch (alt91) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3748:5: otherlv_41= 'assemblyConnectors' otherlv_42= '{' ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) ) (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )* otherlv_46= '}'
+                    {
+                    otherlv_41=(Token)match(input,60,FollowSets000.FOLLOW_60_in_ruleSubSystem7850); 
+
+                        	newLeafNode(otherlv_41, grammarAccess.getSubSystemAccess().getAssemblyConnectorsKeyword_11_0());
+                        
+                    otherlv_42=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7862); 
+
+                        	newLeafNode(otherlv_42, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_11_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3756:1: ( (lv_assemblyConnectors_43_0= ruleAssemblyConnector ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3757:1: (lv_assemblyConnectors_43_0= ruleAssemblyConnector )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3757:1: (lv_assemblyConnectors_43_0= ruleAssemblyConnector )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3758:3: lv_assemblyConnectors_43_0= ruleAssemblyConnector
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleAssemblyConnector_in_ruleSubSystem7883);
+                    lv_assemblyConnectors_43_0=ruleAssemblyConnector();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"assemblyConnectors",
+                            		lv_assemblyConnectors_43_0, 
+                            		"AssemblyConnector");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3774:2: (otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) ) )*
+                    loop90:
+                    do {
+                        int alt90=2;
+                        int LA90_0 = input.LA(1);
+
+                        if ( (LA90_0==15) ) {
+                            alt90=1;
+                        }
+
+
+                        switch (alt90) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3774:4: otherlv_44= ',' ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) )
+                    	    {
+                    	    otherlv_44=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7896); 
+
+                    	        	newLeafNode(otherlv_44, grammarAccess.getSubSystemAccess().getCommaKeyword_11_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3778:1: ( (lv_assemblyConnectors_45_0= ruleAssemblyConnector ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3779:1: (lv_assemblyConnectors_45_0= ruleAssemblyConnector )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3779:1: (lv_assemblyConnectors_45_0= ruleAssemblyConnector )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3780:3: lv_assemblyConnectors_45_0= ruleAssemblyConnector
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleAssemblyConnector_in_ruleSubSystem7917);
+                    	    lv_assemblyConnectors_45_0=ruleAssemblyConnector();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"assemblyConnectors",
+                    	            		lv_assemblyConnectors_45_0, 
+                    	            		"AssemblyConnector");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop90;
+                        }
+                    } while (true);
+
+                    otherlv_46=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem7931); 
+
+                        	newLeafNode(otherlv_46, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_11_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3800:3: (otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}' )?
+            int alt93=2;
+            int LA93_0 = input.LA(1);
+
+            if ( (LA93_0==61) ) {
+                alt93=1;
+            }
+            switch (alt93) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3800:5: otherlv_47= 'providedDelegationConnectors' otherlv_48= '{' ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) ) (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )* otherlv_52= '}'
+                    {
+                    otherlv_47=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleSubSystem7946); 
+
+                        	newLeafNode(otherlv_47, grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsKeyword_12_0());
+                        
+                    otherlv_48=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem7958); 
+
+                        	newLeafNode(otherlv_48, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_12_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3808:1: ( (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3809:1: (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3809:1: (lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3810:3: lv_providedDelegationConnectors_49_0= ruleProvidedDelegationConnector
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleProvidedDelegationConnector_in_ruleSubSystem7979);
+                    lv_providedDelegationConnectors_49_0=ruleProvidedDelegationConnector();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"providedDelegationConnectors",
+                            		lv_providedDelegationConnectors_49_0, 
+                            		"ProvidedDelegationConnector");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3826:2: (otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) ) )*
+                    loop92:
+                    do {
+                        int alt92=2;
+                        int LA92_0 = input.LA(1);
+
+                        if ( (LA92_0==15) ) {
+                            alt92=1;
+                        }
+
+
+                        switch (alt92) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3826:4: otherlv_50= ',' ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) )
+                    	    {
+                    	    otherlv_50=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem7992); 
+
+                    	        	newLeafNode(otherlv_50, grammarAccess.getSubSystemAccess().getCommaKeyword_12_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3830:1: ( (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3831:1: (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3831:1: (lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3832:3: lv_providedDelegationConnectors_51_0= ruleProvidedDelegationConnector
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleProvidedDelegationConnector_in_ruleSubSystem8013);
+                    	    lv_providedDelegationConnectors_51_0=ruleProvidedDelegationConnector();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"providedDelegationConnectors",
+                    	            		lv_providedDelegationConnectors_51_0, 
+                    	            		"ProvidedDelegationConnector");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop92;
+                        }
+                    } while (true);
+
+                    otherlv_52=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem8027); 
+
+                        	newLeafNode(otherlv_52, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_12_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3852:3: (otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}' )?
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( (LA95_0==62) ) {
+                alt95=1;
+            }
+            switch (alt95) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3852:5: otherlv_53= 'requiredDelegationConnectors' otherlv_54= '{' ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) ) (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )* otherlv_58= '}'
+                    {
+                    otherlv_53=(Token)match(input,62,FollowSets000.FOLLOW_62_in_ruleSubSystem8042); 
+
+                        	newLeafNode(otherlv_53, grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsKeyword_13_0());
+                        
+                    otherlv_54=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubSystem8054); 
+
+                        	newLeafNode(otherlv_54, grammarAccess.getSubSystemAccess().getLeftCurlyBracketKeyword_13_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3860:1: ( (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3861:1: (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3861:1: (lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3862:3: lv_requiredDelegationConnectors_55_0= ruleRequiredDelegationConnector
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleRequiredDelegationConnector_in_ruleSubSystem8075);
+                    lv_requiredDelegationConnectors_55_0=ruleRequiredDelegationConnector();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"requiredDelegationConnectors",
+                            		lv_requiredDelegationConnectors_55_0, 
+                            		"RequiredDelegationConnector");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3878:2: (otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) ) )*
+                    loop94:
+                    do {
+                        int alt94=2;
+                        int LA94_0 = input.LA(1);
+
+                        if ( (LA94_0==15) ) {
+                            alt94=1;
+                        }
+
+
+                        switch (alt94) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3878:4: otherlv_56= ',' ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) )
+                    	    {
+                    	    otherlv_56=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleSubSystem8088); 
+
+                    	        	newLeafNode(otherlv_56, grammarAccess.getSubSystemAccess().getCommaKeyword_13_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3882:1: ( (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3883:1: (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3883:1: (lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3884:3: lv_requiredDelegationConnectors_57_0= ruleRequiredDelegationConnector
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getSubSystemAccess().getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleRequiredDelegationConnector_in_ruleSubSystem8109);
+                    	    lv_requiredDelegationConnectors_57_0=ruleRequiredDelegationConnector();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getSubSystemRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"requiredDelegationConnectors",
+                    	            		lv_requiredDelegationConnectors_57_0, 
+                    	            		"RequiredDelegationConnector");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop94;
+                        }
+                    } while (true);
+
+                    otherlv_58=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem8123); 
+
+                        	newLeafNode(otherlv_58, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_13_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_59=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSubSystem8137); 
+
+                	newLeafNode(otherlv_59, grammarAccess.getSubSystemAccess().getRightCurlyBracketKeyword_14());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSubSystem"
+
+
+    // $ANTLR start "entryRuleInfluencingParameter_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3916:1: entryRuleInfluencingParameter_Impl returns [EObject current=null] : iv_ruleInfluencingParameter_Impl= ruleInfluencingParameter_Impl EOF ;
+    public final EObject entryRuleInfluencingParameter_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleInfluencingParameter_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3917:2: (iv_ruleInfluencingParameter_Impl= ruleInfluencingParameter_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3918:2: iv_ruleInfluencingParameter_Impl= ruleInfluencingParameter_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getInfluencingParameter_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_Impl_in_entryRuleInfluencingParameter_Impl8173);
+            iv_ruleInfluencingParameter_Impl=ruleInfluencingParameter_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleInfluencingParameter_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInfluencingParameter_Impl8183); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleInfluencingParameter_Impl"
+
+
+    // $ANTLR start "ruleInfluencingParameter_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3925:1: ruleInfluencingParameter_Impl returns [EObject current=null] : (otherlv_0= 'InfluencingParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'behavior' ( ( ruleEString ) ) (otherlv_7= 'scope' otherlv_8= '{' ( (lv_scope_9_0= ruleScope ) ) (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) ;
+    public final EObject ruleInfluencingParameter_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_description_4_0 = null;
+
+        EObject lv_scope_9_0 = null;
+
+        EObject lv_scope_11_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3928:28: ( (otherlv_0= 'InfluencingParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'behavior' ( ( ruleEString ) ) (otherlv_7= 'scope' otherlv_8= '{' ( (lv_scope_9_0= ruleScope ) ) (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3929:1: (otherlv_0= 'InfluencingParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'behavior' ( ( ruleEString ) ) (otherlv_7= 'scope' otherlv_8= '{' ( (lv_scope_9_0= ruleScope ) ) (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3929:1: (otherlv_0= 'InfluencingParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'behavior' ( ( ruleEString ) ) (otherlv_7= 'scope' otherlv_8= '{' ( (lv_scope_9_0= ruleScope ) ) (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3929:3: otherlv_0= 'InfluencingParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'behavior' ( ( ruleEString ) ) (otherlv_7= 'scope' otherlv_8= '{' ( (lv_scope_9_0= ruleScope ) ) (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )* otherlv_12= '}' )? otherlv_13= '}'
+            {
+            otherlv_0=(Token)match(input,64,FollowSets000.FOLLOW_64_in_ruleInfluencingParameter_Impl8220); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getInfluencingParameter_ImplAccess().getInfluencingParameterKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3933:1: ( (lv_name_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3934:1: (lv_name_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3934:1: (lv_name_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3935:3: lv_name_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getNameEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInfluencingParameter_Impl8241);
+            lv_name_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleInfluencingParameter_Impl8253); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getInfluencingParameter_ImplAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleInfluencingParameter_Impl8265); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3959:1: ( (lv_description_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3960:1: (lv_description_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3960:1: (lv_description_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3961:3: lv_description_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getDescriptionEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInfluencingParameter_Impl8286);
+            lv_description_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"description",
+                    		lv_description_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleInfluencingParameter_Impl8298); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3981:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3982:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3982:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3983:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getInfluencingParameter_ImplRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getBehaviorServiceBehaviorAbstractionCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInfluencingParameter_Impl8321);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3996:2: (otherlv_7= 'scope' otherlv_8= '{' ( (lv_scope_9_0= ruleScope ) ) (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )* otherlv_12= '}' )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
+
+            if ( (LA97_0==67) ) {
+                alt97=1;
+            }
+            switch (alt97) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:3996:4: otherlv_7= 'scope' otherlv_8= '{' ( (lv_scope_9_0= ruleScope ) ) (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )* otherlv_12= '}'
+                    {
+                    otherlv_7=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleInfluencingParameter_Impl8334); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getInfluencingParameter_ImplAccess().getScopeKeyword_7_0());
+                        
+                    otherlv_8=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleInfluencingParameter_Impl8346); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getInfluencingParameter_ImplAccess().getLeftCurlyBracketKeyword_7_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4004:1: ( (lv_scope_9_0= ruleScope ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4005:1: (lv_scope_9_0= ruleScope )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4005:1: (lv_scope_9_0= ruleScope )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4006:3: lv_scope_9_0= ruleScope
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getScopeScopeParserRuleCall_7_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleInfluencingParameter_Impl8367);
+                    lv_scope_9_0=ruleScope();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"scope",
+                            		lv_scope_9_0, 
+                            		"Scope");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4022:2: (otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) ) )*
+                    loop96:
+                    do {
+                        int alt96=2;
+                        int LA96_0 = input.LA(1);
+
+                        if ( (LA96_0==15) ) {
+                            alt96=1;
+                        }
+
+
+                        switch (alt96) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4022:4: otherlv_10= ',' ( (lv_scope_11_0= ruleScope ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleInfluencingParameter_Impl8380); 
+
+                    	        	newLeafNode(otherlv_10, grammarAccess.getInfluencingParameter_ImplAccess().getCommaKeyword_7_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4026:1: ( (lv_scope_11_0= ruleScope ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4027:1: (lv_scope_11_0= ruleScope )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4027:1: (lv_scope_11_0= ruleScope )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4028:3: lv_scope_11_0= ruleScope
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getInfluencingParameter_ImplAccess().getScopeScopeParserRuleCall_7_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleInfluencingParameter_Impl8401);
+                    	    lv_scope_11_0=ruleScope();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getInfluencingParameter_ImplRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"scope",
+                    	            		lv_scope_11_0, 
+                    	            		"Scope");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop96;
+                        }
+                    } while (true);
+
+                    otherlv_12=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleInfluencingParameter_Impl8415); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getInfluencingParameter_ImplAccess().getRightCurlyBracketKeyword_7_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_13=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleInfluencingParameter_Impl8429); 
+
+                	newLeafNode(otherlv_13, grammarAccess.getInfluencingParameter_ImplAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleInfluencingParameter_Impl"
+
+
+    // $ANTLR start "entryRuleResponseTimeSpecification"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4060:1: entryRuleResponseTimeSpecification returns [EObject current=null] : iv_ruleResponseTimeSpecification= ruleResponseTimeSpecification EOF ;
+    public final EObject entryRuleResponseTimeSpecification() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleResponseTimeSpecification = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4061:2: (iv_ruleResponseTimeSpecification= ruleResponseTimeSpecification EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4062:2: iv_ruleResponseTimeSpecification= ruleResponseTimeSpecification EOF
+            {
+             newCompositeNode(grammarAccess.getResponseTimeSpecificationRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleResponseTimeSpecification_in_entryRuleResponseTimeSpecification8465);
+            iv_ruleResponseTimeSpecification=ruleResponseTimeSpecification();
+
+            state._fsp--;
+
+             current =iv_ruleResponseTimeSpecification; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleResponseTimeSpecification8475); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleResponseTimeSpecification"
+
+
+    // $ANTLR start "ruleResponseTimeSpecification"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4069:1: ruleResponseTimeSpecification returns [EObject current=null] : ( () otherlv_1= 'ResponseTimeSpecification' ) ;
+    public final EObject ruleResponseTimeSpecification() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4072:28: ( ( () otherlv_1= 'ResponseTimeSpecification' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4073:1: ( () otherlv_1= 'ResponseTimeSpecification' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4073:1: ( () otherlv_1= 'ResponseTimeSpecification' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4073:2: () otherlv_1= 'ResponseTimeSpecification'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4073:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4074:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getResponseTimeSpecificationAccess().getResponseTimeSpecificationAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleResponseTimeSpecification8521); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getResponseTimeSpecificationAccess().getResponseTimeSpecificationKeyword_1());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleResponseTimeSpecification"
+
+
+    // $ANTLR start "entryRuleScope"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4091:1: entryRuleScope returns [EObject current=null] : iv_ruleScope= ruleScope EOF ;
+    public final EObject entryRuleScope() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleScope = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4092:2: (iv_ruleScope= ruleScope EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4093:2: iv_ruleScope= ruleScope EOF
+            {
+             newCompositeNode(grammarAccess.getScopeRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleScope_in_entryRuleScope8557);
+            iv_ruleScope=ruleScope();
+
+            state._fsp--;
+
+             current =iv_ruleScope; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleScope8567); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleScope"
+
+
+    // $ANTLR start "ruleScope"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4100:1: ruleScope returns [EObject current=null] : (otherlv_0= 'Scope' otherlv_1= '{' otherlv_2= 'interfaceProvidingRequiringEntity' ( ( ruleEString ) ) otherlv_4= '}' ) ;
+    public final EObject ruleScope() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4103:28: ( (otherlv_0= 'Scope' otherlv_1= '{' otherlv_2= 'interfaceProvidingRequiringEntity' ( ( ruleEString ) ) otherlv_4= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4104:1: (otherlv_0= 'Scope' otherlv_1= '{' otherlv_2= 'interfaceProvidingRequiringEntity' ( ( ruleEString ) ) otherlv_4= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4104:1: (otherlv_0= 'Scope' otherlv_1= '{' otherlv_2= 'interfaceProvidingRequiringEntity' ( ( ruleEString ) ) otherlv_4= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4104:3: otherlv_0= 'Scope' otherlv_1= '{' otherlv_2= 'interfaceProvidingRequiringEntity' ( ( ruleEString ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,69,FollowSets000.FOLLOW_69_in_ruleScope8604); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getScopeAccess().getScopeKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleScope8616); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getScopeAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,70,FollowSets000.FOLLOW_70_in_ruleScope8628); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4116:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4117:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4117:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4118:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getScopeRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getScopeAccess().getInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleScope8651);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleScope8663); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getScopeAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleScope"
+
+
+    // $ANTLR start "entryRuleServiceInputParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4143:1: entryRuleServiceInputParameter returns [EObject current=null] : iv_ruleServiceInputParameter= ruleServiceInputParameter EOF ;
+    public final EObject entryRuleServiceInputParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleServiceInputParameter = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4144:2: (iv_ruleServiceInputParameter= ruleServiceInputParameter EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4145:2: iv_ruleServiceInputParameter= ruleServiceInputParameter EOF
+            {
+             newCompositeNode(grammarAccess.getServiceInputParameterRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleServiceInputParameter_in_entryRuleServiceInputParameter8699);
+            iv_ruleServiceInputParameter=ruleServiceInputParameter();
+
+            state._fsp--;
+
+             current =iv_ruleServiceInputParameter; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleServiceInputParameter8709); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleServiceInputParameter"
+
+
+    // $ANTLR start "ruleServiceInputParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4152:1: ruleServiceInputParameter returns [EObject current=null] : (otherlv_0= 'ServiceInputParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'providedRole' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) ;
+    public final EObject ruleServiceInputParameter() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_description_4_0 = null;
+
+        Enumerator lv_characterization_6_0 = null;
+
+        EObject lv_scope_19_0 = null;
+
+        EObject lv_scope_21_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4155:28: ( (otherlv_0= 'ServiceInputParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'providedRole' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4156:1: (otherlv_0= 'ServiceInputParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'providedRole' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4156:1: (otherlv_0= 'ServiceInputParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'providedRole' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4156:3: otherlv_0= 'ServiceInputParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'providedRole' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}'
+            {
+            otherlv_0=(Token)match(input,71,FollowSets000.FOLLOW_71_in_ruleServiceInputParameter8746); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getServiceInputParameterAccess().getServiceInputParameterKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4160:1: ( (lv_name_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4161:1: (lv_name_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4161:1: (lv_name_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4162:3: lv_name_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getNameEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleServiceInputParameter8767);
+            lv_name_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleServiceInputParameter8779); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getServiceInputParameterAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleServiceInputParameter8791); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getServiceInputParameterAccess().getDescriptionKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4186:1: ( (lv_description_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4187:1: (lv_description_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4187:1: (lv_description_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4188:3: lv_description_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getDescriptionEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleServiceInputParameter8812);
+            lv_description_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"description",
+                    		lv_description_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,72,FollowSets000.FOLLOW_72_in_ruleServiceInputParameter8824); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getServiceInputParameterAccess().getCharacterizationKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4208:1: ( (lv_characterization_6_0= ruleCharacterizationType ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4209:1: (lv_characterization_6_0= ruleCharacterizationType )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4209:1: (lv_characterization_6_0= ruleCharacterizationType )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4210:3: lv_characterization_6_0= ruleCharacterizationType
+            {
+             
+            	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleCharacterizationType_in_ruleServiceInputParameter8845);
+            lv_characterization_6_0=ruleCharacterizationType();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"characterization",
+                    		lv_characterization_6_0, 
+                    		"CharacterizationType");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleServiceInputParameter8857); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getServiceInputParameterAccess().getBehaviorKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4230:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4231:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4231:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4232:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getServiceInputParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleServiceInputParameter8880);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleServiceInputParameter8892); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getServiceInputParameterAccess().getSignatureKeyword_9());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4249:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4250:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4250:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4251:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getServiceInputParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getSignatureSignatureCrossReference_10_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleServiceInputParameter8915);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4264:2: (otherlv_11= 'parameter' ( ( ruleEString ) ) )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
+
+            if ( (LA98_0==74) ) {
+                alt98=1;
+            }
+            switch (alt98) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4264:4: otherlv_11= 'parameter' ( ( ruleEString ) )
+                    {
+                    otherlv_11=(Token)match(input,74,FollowSets000.FOLLOW_74_in_ruleServiceInputParameter8928); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getServiceInputParameterAccess().getParameterKeyword_11_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4268:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4269:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4269:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4270:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getServiceInputParameterRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getParameterParameterCrossReference_11_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleServiceInputParameter8951);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4283:4: (otherlv_13= 'returnType' ( ( ruleEString ) ) )?
+            int alt99=2;
+            int LA99_0 = input.LA(1);
+
+            if ( (LA99_0==40) ) {
+                alt99=1;
+            }
+            switch (alt99) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4283:6: otherlv_13= 'returnType' ( ( ruleEString ) )
+                    {
+                    otherlv_13=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleServiceInputParameter8966); 
+
+                        	newLeafNode(otherlv_13, grammarAccess.getServiceInputParameterAccess().getReturnTypeKeyword_12_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4287:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4288:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4288:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4289:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getServiceInputParameterRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleServiceInputParameter8989);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_15=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleServiceInputParameter9003); 
+
+                	newLeafNode(otherlv_15, grammarAccess.getServiceInputParameterAccess().getProvidedRoleKeyword_13());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4306:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4307:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4307:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4308:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getServiceInputParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getProvidedRoleProvidedRoleCrossReference_14_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleServiceInputParameter9026);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4321:2: (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
+
+            if ( (LA101_0==67) ) {
+                alt101=1;
+            }
+            switch (alt101) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4321:4: otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleServiceInputParameter9039); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getServiceInputParameterAccess().getScopeKeyword_15_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleServiceInputParameter9051); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getServiceInputParameterAccess().getLeftCurlyBracketKeyword_15_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4329:1: ( (lv_scope_19_0= ruleScope ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4330:1: (lv_scope_19_0= ruleScope )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4330:1: (lv_scope_19_0= ruleScope )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4331:3: lv_scope_19_0= ruleScope
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getScopeScopeParserRuleCall_15_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleServiceInputParameter9072);
+                    lv_scope_19_0=ruleScope();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"scope",
+                            		lv_scope_19_0, 
+                            		"Scope");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4347:2: (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )*
+                    loop100:
+                    do {
+                        int alt100=2;
+                        int LA100_0 = input.LA(1);
+
+                        if ( (LA100_0==15) ) {
+                            alt100=1;
+                        }
+
+
+                        switch (alt100) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4347:4: otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleServiceInputParameter9085); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getServiceInputParameterAccess().getCommaKeyword_15_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4351:1: ( (lv_scope_21_0= ruleScope ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4352:1: (lv_scope_21_0= ruleScope )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4352:1: (lv_scope_21_0= ruleScope )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4353:3: lv_scope_21_0= ruleScope
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getServiceInputParameterAccess().getScopeScopeParserRuleCall_15_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleServiceInputParameter9106);
+                    	    lv_scope_21_0=ruleScope();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getServiceInputParameterRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"scope",
+                    	            		lv_scope_21_0, 
+                    	            		"Scope");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop100;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleServiceInputParameter9120); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getServiceInputParameterAccess().getRightCurlyBracketKeyword_15_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_23=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleServiceInputParameter9134); 
+
+                	newLeafNode(otherlv_23, grammarAccess.getServiceInputParameterAccess().getRightCurlyBracketKeyword_16());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleServiceInputParameter"
+
+
+    // $ANTLR start "entryRuleExternalCallReturnParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4385:1: entryRuleExternalCallReturnParameter returns [EObject current=null] : iv_ruleExternalCallReturnParameter= ruleExternalCallReturnParameter EOF ;
+    public final EObject entryRuleExternalCallReturnParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExternalCallReturnParameter = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4386:2: (iv_ruleExternalCallReturnParameter= ruleExternalCallReturnParameter EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4387:2: iv_ruleExternalCallReturnParameter= ruleExternalCallReturnParameter EOF
+            {
+             newCompositeNode(grammarAccess.getExternalCallReturnParameterRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExternalCallReturnParameter_in_entryRuleExternalCallReturnParameter9170);
+            iv_ruleExternalCallReturnParameter=ruleExternalCallReturnParameter();
+
+            state._fsp--;
+
+             current =iv_ruleExternalCallReturnParameter; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExternalCallReturnParameter9180); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExternalCallReturnParameter"
+
+
+    // $ANTLR start "ruleExternalCallReturnParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4394:1: ruleExternalCallReturnParameter returns [EObject current=null] : (otherlv_0= 'ExternalCallReturnParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externalCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) ;
+    public final EObject ruleExternalCallReturnParameter() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_description_4_0 = null;
+
+        Enumerator lv_characterization_6_0 = null;
+
+        EObject lv_scope_19_0 = null;
+
+        EObject lv_scope_21_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4397:28: ( (otherlv_0= 'ExternalCallReturnParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externalCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4398:1: (otherlv_0= 'ExternalCallReturnParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externalCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4398:1: (otherlv_0= 'ExternalCallReturnParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externalCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4398:3: otherlv_0= 'ExternalCallReturnParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externalCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}'
+            {
+            otherlv_0=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleExternalCallReturnParameter9217); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getExternalCallReturnParameterAccess().getExternalCallReturnParameterKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4402:1: ( (lv_name_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4403:1: (lv_name_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4403:1: (lv_name_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4404:3: lv_name_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getNameEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9238);
+            lv_name_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExternalCallReturnParameter9250); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getExternalCallReturnParameterAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleExternalCallReturnParameter9262); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getExternalCallReturnParameterAccess().getDescriptionKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4428:1: ( (lv_description_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4429:1: (lv_description_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4429:1: (lv_description_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4430:3: lv_description_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getDescriptionEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9283);
+            lv_description_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"description",
+                    		lv_description_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,72,FollowSets000.FOLLOW_72_in_ruleExternalCallReturnParameter9295); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4450:1: ( (lv_characterization_6_0= ruleCharacterizationType ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4451:1: (lv_characterization_6_0= ruleCharacterizationType )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4451:1: (lv_characterization_6_0= ruleCharacterizationType )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4452:3: lv_characterization_6_0= ruleCharacterizationType
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleCharacterizationType_in_ruleExternalCallReturnParameter9316);
+            lv_characterization_6_0=ruleCharacterizationType();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"characterization",
+                    		lv_characterization_6_0, 
+                    		"CharacterizationType");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleExternalCallReturnParameter9328); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getExternalCallReturnParameterAccess().getBehaviorKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4472:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4473:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4473:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4474:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9351);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleExternalCallReturnParameter9363); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getExternalCallReturnParameterAccess().getSignatureKeyword_9());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4491:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4492:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4492:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4493:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getSignatureSignatureCrossReference_10_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9386);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4506:2: (otherlv_11= 'parameter' ( ( ruleEString ) ) )?
+            int alt102=2;
+            int LA102_0 = input.LA(1);
+
+            if ( (LA102_0==74) ) {
+                alt102=1;
+            }
+            switch (alt102) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4506:4: otherlv_11= 'parameter' ( ( ruleEString ) )
+                    {
+                    otherlv_11=(Token)match(input,74,FollowSets000.FOLLOW_74_in_ruleExternalCallReturnParameter9399); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getExternalCallReturnParameterAccess().getParameterKeyword_11_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4510:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4511:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4511:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4512:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getParameterParameterCrossReference_11_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9422);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4525:4: (otherlv_13= 'returnType' ( ( ruleEString ) ) )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( (LA103_0==40) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4525:6: otherlv_13= 'returnType' ( ( ruleEString ) )
+                    {
+                    otherlv_13=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleExternalCallReturnParameter9437); 
+
+                        	newLeafNode(otherlv_13, grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeKeyword_12_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4529:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4530:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4530:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4531:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9460);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_15=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleExternalCallReturnParameter9474); 
+
+                	newLeafNode(otherlv_15, grammarAccess.getExternalCallReturnParameterAccess().getExternalCallKeyword_13());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4548:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4549:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4549:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4550:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallReturnParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getExternalCallExternalCallCrossReference_14_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9497);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4563:2: (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )?
+            int alt105=2;
+            int LA105_0 = input.LA(1);
+
+            if ( (LA105_0==67) ) {
+                alt105=1;
+            }
+            switch (alt105) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4563:4: otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleExternalCallReturnParameter9510); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getExternalCallReturnParameterAccess().getScopeKeyword_15_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExternalCallReturnParameter9522); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getExternalCallReturnParameterAccess().getLeftCurlyBracketKeyword_15_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4571:1: ( (lv_scope_19_0= ruleScope ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4572:1: (lv_scope_19_0= ruleScope )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4572:1: (lv_scope_19_0= ruleScope )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4573:3: lv_scope_19_0= ruleScope
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getScopeScopeParserRuleCall_15_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleExternalCallReturnParameter9543);
+                    lv_scope_19_0=ruleScope();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"scope",
+                            		lv_scope_19_0, 
+                            		"Scope");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4589:2: (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )*
+                    loop104:
+                    do {
+                        int alt104=2;
+                        int LA104_0 = input.LA(1);
+
+                        if ( (LA104_0==15) ) {
+                            alt104=1;
+                        }
+
+
+                        switch (alt104) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4589:4: otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleExternalCallReturnParameter9556); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getExternalCallReturnParameterAccess().getCommaKeyword_15_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4593:1: ( (lv_scope_21_0= ruleScope ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4594:1: (lv_scope_21_0= ruleScope )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4594:1: (lv_scope_21_0= ruleScope )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4595:3: lv_scope_21_0= ruleScope
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getExternalCallReturnParameterAccess().getScopeScopeParserRuleCall_15_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleExternalCallReturnParameter9577);
+                    	    lv_scope_21_0=ruleScope();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getExternalCallReturnParameterRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"scope",
+                    	            		lv_scope_21_0, 
+                    	            		"Scope");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop104;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExternalCallReturnParameter9591); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getExternalCallReturnParameterAccess().getRightCurlyBracketKeyword_15_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_23=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExternalCallReturnParameter9605); 
+
+                	newLeafNode(otherlv_23, grammarAccess.getExternalCallReturnParameterAccess().getRightCurlyBracketKeyword_16());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExternalCallReturnParameter"
+
+
+    // $ANTLR start "entryRuleExternalCallParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4627:1: entryRuleExternalCallParameter returns [EObject current=null] : iv_ruleExternalCallParameter= ruleExternalCallParameter EOF ;
+    public final EObject entryRuleExternalCallParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExternalCallParameter = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4628:2: (iv_ruleExternalCallParameter= ruleExternalCallParameter EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4629:2: iv_ruleExternalCallParameter= ruleExternalCallParameter EOF
+            {
+             newCompositeNode(grammarAccess.getExternalCallParameterRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExternalCallParameter_in_entryRuleExternalCallParameter9641);
+            iv_ruleExternalCallParameter=ruleExternalCallParameter();
+
+            state._fsp--;
+
+             current =iv_ruleExternalCallParameter; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExternalCallParameter9651); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExternalCallParameter"
+
+
+    // $ANTLR start "ruleExternalCallParameter"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4636:1: ruleExternalCallParameter returns [EObject current=null] : (otherlv_0= 'ExternalCallParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externallCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) ;
+    public final EObject ruleExternalCallParameter() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        Token otherlv_23=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_description_4_0 = null;
+
+        Enumerator lv_characterization_6_0 = null;
+
+        EObject lv_scope_19_0 = null;
+
+        EObject lv_scope_21_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4639:28: ( (otherlv_0= 'ExternalCallParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externallCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4640:1: (otherlv_0= 'ExternalCallParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externallCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4640:1: (otherlv_0= 'ExternalCallParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externallCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4640:3: otherlv_0= 'ExternalCallParameter' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'description' ( (lv_description_4_0= ruleEString ) ) otherlv_5= 'characterization' ( (lv_characterization_6_0= ruleCharacterizationType ) ) otherlv_7= 'behavior' ( ( ruleEString ) ) otherlv_9= 'signature' ( ( ruleEString ) ) (otherlv_11= 'parameter' ( ( ruleEString ) ) )? (otherlv_13= 'returnType' ( ( ruleEString ) ) )? otherlv_15= 'externallCall' ( ( ruleEString ) ) (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )? otherlv_23= '}'
+            {
+            otherlv_0=(Token)match(input,78,FollowSets000.FOLLOW_78_in_ruleExternalCallParameter9688); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getExternalCallParameterAccess().getExternalCallParameterKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4644:1: ( (lv_name_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4645:1: (lv_name_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4645:1: (lv_name_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4646:3: lv_name_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getNameEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallParameter9709);
+            lv_name_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExternalCallParameter9721); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getExternalCallParameterAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleExternalCallParameter9733); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getExternalCallParameterAccess().getDescriptionKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4670:1: ( (lv_description_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4671:1: (lv_description_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4671:1: (lv_description_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4672:3: lv_description_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getDescriptionEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallParameter9754);
+            lv_description_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"description",
+                    		lv_description_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,72,FollowSets000.FOLLOW_72_in_ruleExternalCallParameter9766); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getExternalCallParameterAccess().getCharacterizationKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4692:1: ( (lv_characterization_6_0= ruleCharacterizationType ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4693:1: (lv_characterization_6_0= ruleCharacterizationType )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4693:1: (lv_characterization_6_0= ruleCharacterizationType )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4694:3: lv_characterization_6_0= ruleCharacterizationType
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getCharacterizationCharacterizationTypeEnumRuleCall_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleCharacterizationType_in_ruleExternalCallParameter9787);
+            lv_characterization_6_0=ruleCharacterizationType();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"characterization",
+                    		lv_characterization_6_0, 
+                    		"CharacterizationType");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleExternalCallParameter9799); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getExternalCallParameterAccess().getBehaviorKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4714:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4715:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4715:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4716:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getBehaviorServiceBehaviorAbstractionCrossReference_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallParameter9822);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleExternalCallParameter9834); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getExternalCallParameterAccess().getSignatureKeyword_9());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4733:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4734:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4734:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4735:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getSignatureSignatureCrossReference_10_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallParameter9857);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4748:2: (otherlv_11= 'parameter' ( ( ruleEString ) ) )?
+            int alt106=2;
+            int LA106_0 = input.LA(1);
+
+            if ( (LA106_0==74) ) {
+                alt106=1;
+            }
+            switch (alt106) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4748:4: otherlv_11= 'parameter' ( ( ruleEString ) )
+                    {
+                    otherlv_11=(Token)match(input,74,FollowSets000.FOLLOW_74_in_ruleExternalCallParameter9870); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getExternalCallParameterAccess().getParameterKeyword_11_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4752:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4753:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4753:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4754:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getExternalCallParameterRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getParameterParameterCrossReference_11_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallParameter9893);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4767:4: (otherlv_13= 'returnType' ( ( ruleEString ) ) )?
+            int alt107=2;
+            int LA107_0 = input.LA(1);
+
+            if ( (LA107_0==40) ) {
+                alt107=1;
+            }
+            switch (alt107) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4767:6: otherlv_13= 'returnType' ( ( ruleEString ) )
+                    {
+                    otherlv_13=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleExternalCallParameter9908); 
+
+                        	newLeafNode(otherlv_13, grammarAccess.getExternalCallParameterAccess().getReturnTypeKeyword_12_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4771:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4772:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4772:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4773:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getExternalCallParameterRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getReturnTypeDataTypeCrossReference_12_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallParameter9931);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_15=(Token)match(input,79,FollowSets000.FOLLOW_79_in_ruleExternalCallParameter9945); 
+
+                	newLeafNode(otherlv_15, grammarAccess.getExternalCallParameterAccess().getExternallCallKeyword_13());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4790:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4791:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4791:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4792:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallParameterRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getExternallCallExternalCallCrossReference_14_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallParameter9968);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4805:2: (otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}' )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
+
+            if ( (LA109_0==67) ) {
+                alt109=1;
+            }
+            switch (alt109) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4805:4: otherlv_17= 'scope' otherlv_18= '{' ( (lv_scope_19_0= ruleScope ) ) (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )* otherlv_22= '}'
+                    {
+                    otherlv_17=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleExternalCallParameter9981); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getExternalCallParameterAccess().getScopeKeyword_15_0());
+                        
+                    otherlv_18=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExternalCallParameter9993); 
+
+                        	newLeafNode(otherlv_18, grammarAccess.getExternalCallParameterAccess().getLeftCurlyBracketKeyword_15_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4813:1: ( (lv_scope_19_0= ruleScope ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4814:1: (lv_scope_19_0= ruleScope )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4814:1: (lv_scope_19_0= ruleScope )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4815:3: lv_scope_19_0= ruleScope
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getScopeScopeParserRuleCall_15_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleExternalCallParameter10014);
+                    lv_scope_19_0=ruleScope();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"scope",
+                            		lv_scope_19_0, 
+                            		"Scope");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4831:2: (otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) ) )*
+                    loop108:
+                    do {
+                        int alt108=2;
+                        int LA108_0 = input.LA(1);
+
+                        if ( (LA108_0==15) ) {
+                            alt108=1;
+                        }
+
+
+                        switch (alt108) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4831:4: otherlv_20= ',' ( (lv_scope_21_0= ruleScope ) )
+                    	    {
+                    	    otherlv_20=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleExternalCallParameter10027); 
+
+                    	        	newLeafNode(otherlv_20, grammarAccess.getExternalCallParameterAccess().getCommaKeyword_15_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4835:1: ( (lv_scope_21_0= ruleScope ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4836:1: (lv_scope_21_0= ruleScope )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4836:1: (lv_scope_21_0= ruleScope )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4837:3: lv_scope_21_0= ruleScope
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getExternalCallParameterAccess().getScopeScopeParserRuleCall_15_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleScope_in_ruleExternalCallParameter10048);
+                    	    lv_scope_21_0=ruleScope();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getExternalCallParameterRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"scope",
+                    	            		lv_scope_21_0, 
+                    	            		"Scope");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop108;
+                        }
+                    } while (true);
+
+                    otherlv_22=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExternalCallParameter10062); 
+
+                        	newLeafNode(otherlv_22, grammarAccess.getExternalCallParameterAccess().getRightCurlyBracketKeyword_15_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_23=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExternalCallParameter10076); 
+
+                	newLeafNode(otherlv_23, grammarAccess.getExternalCallParameterAccess().getRightCurlyBracketKeyword_16());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExternalCallParameter"
+
+
+    // $ANTLR start "entryRuleFineGrainedBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4869:1: entryRuleFineGrainedBehavior returns [EObject current=null] : iv_ruleFineGrainedBehavior= ruleFineGrainedBehavior EOF ;
+    public final EObject entryRuleFineGrainedBehavior() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFineGrainedBehavior = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4870:2: (iv_ruleFineGrainedBehavior= ruleFineGrainedBehavior EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4871:2: iv_ruleFineGrainedBehavior= ruleFineGrainedBehavior EOF
+            {
+             newCompositeNode(grammarAccess.getFineGrainedBehaviorRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFineGrainedBehavior_in_entryRuleFineGrainedBehavior10112);
+            iv_ruleFineGrainedBehavior=ruleFineGrainedBehavior();
+
+            state._fsp--;
+
+             current =iv_ruleFineGrainedBehavior; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFineGrainedBehavior10122); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFineGrainedBehavior"
+
+
+    // $ANTLR start "ruleFineGrainedBehavior"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4878:1: ruleFineGrainedBehavior returns [EObject current=null] : (otherlv_0= 'FineGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'basicComponent' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'actions' otherlv_13= '{' ( (lv_actions_14_0= ruleAbstractAction ) ) (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )* otherlv_17= '}' )? otherlv_18= 'behavior' ( (lv_behavior_19_0= ruleComponentInternalBehavior ) ) otherlv_20= '}' ) ;
+    public final EObject ruleFineGrainedBehavior() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        EObject lv_influencingParameter_8_0 = null;
+
+        EObject lv_influencingParameter_10_0 = null;
+
+        EObject lv_actions_14_0 = null;
+
+        EObject lv_actions_16_0 = null;
+
+        EObject lv_behavior_19_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4881:28: ( (otherlv_0= 'FineGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'basicComponent' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'actions' otherlv_13= '{' ( (lv_actions_14_0= ruleAbstractAction ) ) (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )* otherlv_17= '}' )? otherlv_18= 'behavior' ( (lv_behavior_19_0= ruleComponentInternalBehavior ) ) otherlv_20= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4882:1: (otherlv_0= 'FineGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'basicComponent' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'actions' otherlv_13= '{' ( (lv_actions_14_0= ruleAbstractAction ) ) (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )* otherlv_17= '}' )? otherlv_18= 'behavior' ( (lv_behavior_19_0= ruleComponentInternalBehavior ) ) otherlv_20= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4882:1: (otherlv_0= 'FineGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'basicComponent' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'actions' otherlv_13= '{' ( (lv_actions_14_0= ruleAbstractAction ) ) (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )* otherlv_17= '}' )? otherlv_18= 'behavior' ( (lv_behavior_19_0= ruleComponentInternalBehavior ) ) otherlv_20= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4882:3: otherlv_0= 'FineGrainedBehavior' otherlv_1= '{' (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )? otherlv_4= 'basicComponent' ( ( ruleEString ) ) (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )? (otherlv_12= 'actions' otherlv_13= '{' ( (lv_actions_14_0= ruleAbstractAction ) ) (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )* otherlv_17= '}' )? otherlv_18= 'behavior' ( (lv_behavior_19_0= ruleComponentInternalBehavior ) ) otherlv_20= '}'
+            {
+            otherlv_0=(Token)match(input,80,FollowSets000.FOLLOW_80_in_ruleFineGrainedBehavior10159); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getFineGrainedBehaviorAccess().getFineGrainedBehaviorKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFineGrainedBehavior10171); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4890:1: (otherlv_2= 'describedSignature' ( ( ruleEString ) ) )?
+            int alt110=2;
+            int LA110_0 = input.LA(1);
+
+            if ( (LA110_0==47) ) {
+                alt110=1;
+            }
+            switch (alt110) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4890:3: otherlv_2= 'describedSignature' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleFineGrainedBehavior10184); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4894:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4895:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4895:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4896:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getFineGrainedBehaviorRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getDescribedSignatureSignatureCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleFineGrainedBehavior10207);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_4=(Token)match(input,81,FollowSets000.FOLLOW_81_in_ruleFineGrainedBehavior10221); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4913:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4914:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4914:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4915:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getFineGrainedBehaviorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getBasicComponentBasicComponentCrossReference_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleFineGrainedBehavior10244);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4928:2: (otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}' )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
+
+            if ( (LA112_0==49) ) {
+                alt112=1;
+            }
+            switch (alt112) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4928:4: otherlv_6= 'influencingParameter' otherlv_7= '{' ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) ) (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )* otherlv_11= '}'
+                    {
+                    otherlv_6=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleFineGrainedBehavior10257); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterKeyword_5_0());
+                        
+                    otherlv_7=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFineGrainedBehavior10269); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4936:1: ( (lv_influencingParameter_8_0= ruleInfluencingParameter ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4937:1: (lv_influencingParameter_8_0= ruleInfluencingParameter )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4937:1: (lv_influencingParameter_8_0= ruleInfluencingParameter )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4938:3: lv_influencingParameter_8_0= ruleInfluencingParameter
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_in_ruleFineGrainedBehavior10290);
+                    lv_influencingParameter_8_0=ruleInfluencingParameter();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"influencingParameter",
+                            		lv_influencingParameter_8_0, 
+                            		"InfluencingParameter");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4954:2: (otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) ) )*
+                    loop111:
+                    do {
+                        int alt111=2;
+                        int LA111_0 = input.LA(1);
+
+                        if ( (LA111_0==15) ) {
+                            alt111=1;
+                        }
+
+
+                        switch (alt111) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4954:4: otherlv_9= ',' ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleFineGrainedBehavior10303); 
+
+                    	        	newLeafNode(otherlv_9, grammarAccess.getFineGrainedBehaviorAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4958:1: ( (lv_influencingParameter_10_0= ruleInfluencingParameter ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4959:1: (lv_influencingParameter_10_0= ruleInfluencingParameter )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4959:1: (lv_influencingParameter_10_0= ruleInfluencingParameter )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4960:3: lv_influencingParameter_10_0= ruleInfluencingParameter
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleInfluencingParameter_in_ruleFineGrainedBehavior10324);
+                    	    lv_influencingParameter_10_0=ruleInfluencingParameter();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"influencingParameter",
+                    	            		lv_influencingParameter_10_0, 
+                    	            		"InfluencingParameter");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop111;
+                        }
+                    } while (true);
+
+                    otherlv_11=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleFineGrainedBehavior10338); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4980:3: (otherlv_12= 'actions' otherlv_13= '{' ( (lv_actions_14_0= ruleAbstractAction ) ) (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )* otherlv_17= '}' )?
+            int alt114=2;
+            int LA114_0 = input.LA(1);
+
+            if ( (LA114_0==82) ) {
+                alt114=1;
+            }
+            switch (alt114) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4980:5: otherlv_12= 'actions' otherlv_13= '{' ( (lv_actions_14_0= ruleAbstractAction ) ) (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )* otherlv_17= '}'
+                    {
+                    otherlv_12=(Token)match(input,82,FollowSets000.FOLLOW_82_in_ruleFineGrainedBehavior10353); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getFineGrainedBehaviorAccess().getActionsKeyword_6_0());
+                        
+                    otherlv_13=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFineGrainedBehavior10365); 
+
+                        	newLeafNode(otherlv_13, grammarAccess.getFineGrainedBehaviorAccess().getLeftCurlyBracketKeyword_6_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4988:1: ( (lv_actions_14_0= ruleAbstractAction ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4989:1: (lv_actions_14_0= ruleAbstractAction )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4989:1: (lv_actions_14_0= ruleAbstractAction )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:4990:3: lv_actions_14_0= ruleAbstractAction
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getActionsAbstractActionParserRuleCall_6_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_in_ruleFineGrainedBehavior10386);
+                    lv_actions_14_0=ruleAbstractAction();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"actions",
+                            		lv_actions_14_0, 
+                            		"AbstractAction");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5006:2: (otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) ) )*
+                    loop113:
+                    do {
+                        int alt113=2;
+                        int LA113_0 = input.LA(1);
+
+                        if ( (LA113_0==15) ) {
+                            alt113=1;
+                        }
+
+
+                        switch (alt113) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5006:4: otherlv_15= ',' ( (lv_actions_16_0= ruleAbstractAction ) )
+                    	    {
+                    	    otherlv_15=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleFineGrainedBehavior10399); 
+
+                    	        	newLeafNode(otherlv_15, grammarAccess.getFineGrainedBehaviorAccess().getCommaKeyword_6_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5010:1: ( (lv_actions_16_0= ruleAbstractAction ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5011:1: (lv_actions_16_0= ruleAbstractAction )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5011:1: (lv_actions_16_0= ruleAbstractAction )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5012:3: lv_actions_16_0= ruleAbstractAction
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getActionsAbstractActionParserRuleCall_6_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_in_ruleFineGrainedBehavior10420);
+                    	    lv_actions_16_0=ruleAbstractAction();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"actions",
+                    	            		lv_actions_16_0, 
+                    	            		"AbstractAction");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop113;
+                        }
+                    } while (true);
+
+                    otherlv_17=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleFineGrainedBehavior10434); 
+
+                        	newLeafNode(otherlv_17, grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_6_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_18=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleFineGrainedBehavior10448); 
+
+                	newLeafNode(otherlv_18, grammarAccess.getFineGrainedBehaviorAccess().getBehaviorKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5036:1: ( (lv_behavior_19_0= ruleComponentInternalBehavior ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5037:1: (lv_behavior_19_0= ruleComponentInternalBehavior )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5037:1: (lv_behavior_19_0= ruleComponentInternalBehavior )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5038:3: lv_behavior_19_0= ruleComponentInternalBehavior
+            {
+             
+            	        newCompositeNode(grammarAccess.getFineGrainedBehaviorAccess().getBehaviorComponentInternalBehaviorParserRuleCall_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_in_ruleFineGrainedBehavior10469);
+            lv_behavior_19_0=ruleComponentInternalBehavior();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getFineGrainedBehaviorRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"behavior",
+                    		lv_behavior_19_0, 
+                    		"ComponentInternalBehavior");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_20=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleFineGrainedBehavior10481); 
+
+                	newLeafNode(otherlv_20, grammarAccess.getFineGrainedBehaviorAccess().getRightCurlyBracketKeyword_9());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFineGrainedBehavior"
+
+
+    // $ANTLR start "entryRuleAbstractAction_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5066:1: entryRuleAbstractAction_Impl returns [EObject current=null] : iv_ruleAbstractAction_Impl= ruleAbstractAction_Impl EOF ;
+    public final EObject entryRuleAbstractAction_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleAbstractAction_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5067:2: (iv_ruleAbstractAction_Impl= ruleAbstractAction_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5068:2: iv_ruleAbstractAction_Impl= ruleAbstractAction_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getAbstractAction_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_Impl_in_entryRuleAbstractAction_Impl10517);
+            iv_ruleAbstractAction_Impl=ruleAbstractAction_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleAbstractAction_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAbstractAction_Impl10527); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleAbstractAction_Impl"
+
+
+    // $ANTLR start "ruleAbstractAction_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5075:1: ruleAbstractAction_Impl returns [EObject current=null] : ( () otherlv_1= 'AbstractAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' ) ;
+    public final EObject ruleAbstractAction_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5078:28: ( ( () otherlv_1= 'AbstractAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5079:1: ( () otherlv_1= 'AbstractAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5079:1: ( () otherlv_1= 'AbstractAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5079:2: () otherlv_1= 'AbstractAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5079:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5080:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getAbstractAction_ImplAccess().getAbstractActionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,83,FollowSets000.FOLLOW_83_in_ruleAbstractAction_Impl10573); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getAbstractAction_ImplAccess().getAbstractActionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleAbstractAction_Impl10585); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getAbstractAction_ImplAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5093:1: (otherlv_3= 'predecessor' ( ( ruleEString ) ) )?
+            int alt115=2;
+            int LA115_0 = input.LA(1);
+
+            if ( (LA115_0==84) ) {
+                alt115=1;
+            }
+            switch (alt115) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5093:3: otherlv_3= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_3=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleAbstractAction_Impl10598); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getAbstractAction_ImplAccess().getPredecessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5097:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5098:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5098:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5099:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getAbstractAction_ImplRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getAbstractAction_ImplAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAbstractAction_Impl10621);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5112:4: (otherlv_5= 'successor' ( ( ruleEString ) ) )?
+            int alt116=2;
+            int LA116_0 = input.LA(1);
+
+            if ( (LA116_0==85) ) {
+                alt116=1;
+            }
+            switch (alt116) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5112:6: otherlv_5= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_5=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleAbstractAction_Impl10636); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getAbstractAction_ImplAccess().getSuccessorKeyword_4_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5116:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5117:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5117:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5118:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getAbstractAction_ImplRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getAbstractAction_ImplAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAbstractAction_Impl10659);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleAbstractAction_Impl10673); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getAbstractAction_ImplAccess().getRightCurlyBracketKeyword_5());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleAbstractAction_Impl"
+
+
+    // $ANTLR start "entryRuleComponentInternalBehavior_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5143:1: entryRuleComponentInternalBehavior_Impl returns [EObject current=null] : iv_ruleComponentInternalBehavior_Impl= ruleComponentInternalBehavior_Impl EOF ;
+    public final EObject entryRuleComponentInternalBehavior_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleComponentInternalBehavior_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5144:2: (iv_ruleComponentInternalBehavior_Impl= ruleComponentInternalBehavior_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5145:2: iv_ruleComponentInternalBehavior_Impl= ruleComponentInternalBehavior_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getComponentInternalBehavior_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_Impl_in_entryRuleComponentInternalBehavior_Impl10709);
+            iv_ruleComponentInternalBehavior_Impl=ruleComponentInternalBehavior_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleComponentInternalBehavior_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleComponentInternalBehavior_Impl10719); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleComponentInternalBehavior_Impl"
+
+
+    // $ANTLR start "ruleComponentInternalBehavior_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5152:1: ruleComponentInternalBehavior_Impl returns [EObject current=null] : ( () otherlv_1= 'ComponentInternalBehavior' otherlv_2= '{' (otherlv_3= 'actions' otherlv_4= '{' ( (lv_actions_5_0= ruleAbstractAction ) ) (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) ;
+    public final EObject ruleComponentInternalBehavior_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        EObject lv_actions_5_0 = null;
+
+        EObject lv_actions_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5155:28: ( ( () otherlv_1= 'ComponentInternalBehavior' otherlv_2= '{' (otherlv_3= 'actions' otherlv_4= '{' ( (lv_actions_5_0= ruleAbstractAction ) ) (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5156:1: ( () otherlv_1= 'ComponentInternalBehavior' otherlv_2= '{' (otherlv_3= 'actions' otherlv_4= '{' ( (lv_actions_5_0= ruleAbstractAction ) ) (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5156:1: ( () otherlv_1= 'ComponentInternalBehavior' otherlv_2= '{' (otherlv_3= 'actions' otherlv_4= '{' ( (lv_actions_5_0= ruleAbstractAction ) ) (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5156:2: () otherlv_1= 'ComponentInternalBehavior' otherlv_2= '{' (otherlv_3= 'actions' otherlv_4= '{' ( (lv_actions_5_0= ruleAbstractAction ) ) (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )* otherlv_8= '}' )? otherlv_9= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5156:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5157:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,86,FollowSets000.FOLLOW_86_in_ruleComponentInternalBehavior_Impl10765); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getComponentInternalBehavior_ImplAccess().getComponentInternalBehaviorKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleComponentInternalBehavior_Impl10777); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getComponentInternalBehavior_ImplAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5170:1: (otherlv_3= 'actions' otherlv_4= '{' ( (lv_actions_5_0= ruleAbstractAction ) ) (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )* otherlv_8= '}' )?
+            int alt118=2;
+            int LA118_0 = input.LA(1);
+
+            if ( (LA118_0==82) ) {
+                alt118=1;
+            }
+            switch (alt118) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5170:3: otherlv_3= 'actions' otherlv_4= '{' ( (lv_actions_5_0= ruleAbstractAction ) ) (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )* otherlv_8= '}'
+                    {
+                    otherlv_3=(Token)match(input,82,FollowSets000.FOLLOW_82_in_ruleComponentInternalBehavior_Impl10790); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsKeyword_3_0());
+                        
+                    otherlv_4=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleComponentInternalBehavior_Impl10802); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getComponentInternalBehavior_ImplAccess().getLeftCurlyBracketKeyword_3_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5178:1: ( (lv_actions_5_0= ruleAbstractAction ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5179:1: (lv_actions_5_0= ruleAbstractAction )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5179:1: (lv_actions_5_0= ruleAbstractAction )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5180:3: lv_actions_5_0= ruleAbstractAction
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAbstractActionParserRuleCall_3_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_in_ruleComponentInternalBehavior_Impl10823);
+                    lv_actions_5_0=ruleAbstractAction();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getComponentInternalBehavior_ImplRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"actions",
+                            		lv_actions_5_0, 
+                            		"AbstractAction");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5196:2: (otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) ) )*
+                    loop117:
+                    do {
+                        int alt117=2;
+                        int LA117_0 = input.LA(1);
+
+                        if ( (LA117_0==15) ) {
+                            alt117=1;
+                        }
+
+
+                        switch (alt117) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5196:4: otherlv_6= ',' ( (lv_actions_7_0= ruleAbstractAction ) )
+                    	    {
+                    	    otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleComponentInternalBehavior_Impl10836); 
+
+                    	        	newLeafNode(otherlv_6, grammarAccess.getComponentInternalBehavior_ImplAccess().getCommaKeyword_3_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5200:1: ( (lv_actions_7_0= ruleAbstractAction ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5201:1: (lv_actions_7_0= ruleAbstractAction )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5201:1: (lv_actions_7_0= ruleAbstractAction )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5202:3: lv_actions_7_0= ruleAbstractAction
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getComponentInternalBehavior_ImplAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_in_ruleComponentInternalBehavior_Impl10857);
+                    	    lv_actions_7_0=ruleAbstractAction();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getComponentInternalBehavior_ImplRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"actions",
+                    	            		lv_actions_7_0, 
+                    	            		"AbstractAction");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop117;
+                        }
+                    } while (true);
+
+                    otherlv_8=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleComponentInternalBehavior_Impl10871); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getComponentInternalBehavior_ImplAccess().getRightCurlyBracketKeyword_3_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleComponentInternalBehavior_Impl10885); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getComponentInternalBehavior_ImplAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleComponentInternalBehavior_Impl"
+
+
+    // $ANTLR start "entryRuleStartAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5234:1: entryRuleStartAction returns [EObject current=null] : iv_ruleStartAction= ruleStartAction EOF ;
+    public final EObject entryRuleStartAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStartAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5235:2: (iv_ruleStartAction= ruleStartAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5236:2: iv_ruleStartAction= ruleStartAction EOF
+            {
+             newCompositeNode(grammarAccess.getStartActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleStartAction_in_entryRuleStartAction10921);
+            iv_ruleStartAction=ruleStartAction();
+
+            state._fsp--;
+
+             current =iv_ruleStartAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStartAction10931); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStartAction"
+
+
+    // $ANTLR start "ruleStartAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5243:1: ruleStartAction returns [EObject current=null] : ( () otherlv_1= 'StartAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' ) ;
+    public final EObject ruleStartAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5246:28: ( ( () otherlv_1= 'StartAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5247:1: ( () otherlv_1= 'StartAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5247:1: ( () otherlv_1= 'StartAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5247:2: () otherlv_1= 'StartAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5247:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5248:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getStartActionAccess().getStartActionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleStartAction10977); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getStartActionAccess().getStartActionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleStartAction10989); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getStartActionAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5261:1: (otherlv_3= 'predecessor' ( ( ruleEString ) ) )?
+            int alt119=2;
+            int LA119_0 = input.LA(1);
+
+            if ( (LA119_0==84) ) {
+                alt119=1;
+            }
+            switch (alt119) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5261:3: otherlv_3= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_3=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleStartAction11002); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getStartActionAccess().getPredecessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5265:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5266:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5266:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5267:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getStartActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getStartActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleStartAction11025);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5280:4: (otherlv_5= 'successor' ( ( ruleEString ) ) )?
+            int alt120=2;
+            int LA120_0 = input.LA(1);
+
+            if ( (LA120_0==85) ) {
+                alt120=1;
+            }
+            switch (alt120) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5280:6: otherlv_5= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_5=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleStartAction11040); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getStartActionAccess().getSuccessorKeyword_4_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5284:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5285:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5285:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5286:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getStartActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getStartActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleStartAction11063);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleStartAction11077); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getStartActionAccess().getRightCurlyBracketKeyword_5());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStartAction"
+
+
+    // $ANTLR start "entryRuleStopAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5311:1: entryRuleStopAction returns [EObject current=null] : iv_ruleStopAction= ruleStopAction EOF ;
+    public final EObject entryRuleStopAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleStopAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5312:2: (iv_ruleStopAction= ruleStopAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5313:2: iv_ruleStopAction= ruleStopAction EOF
+            {
+             newCompositeNode(grammarAccess.getStopActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleStopAction_in_entryRuleStopAction11113);
+            iv_ruleStopAction=ruleStopAction();
+
+            state._fsp--;
+
+             current =iv_ruleStopAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStopAction11123); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleStopAction"
+
+
+    // $ANTLR start "ruleStopAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5320:1: ruleStopAction returns [EObject current=null] : ( () otherlv_1= 'StopAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' ) ;
+    public final EObject ruleStopAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5323:28: ( ( () otherlv_1= 'StopAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5324:1: ( () otherlv_1= 'StopAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5324:1: ( () otherlv_1= 'StopAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5324:2: () otherlv_1= 'StopAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? otherlv_7= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5324:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5325:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getStopActionAccess().getStopActionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,88,FollowSets000.FOLLOW_88_in_ruleStopAction11169); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getStopActionAccess().getStopActionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleStopAction11181); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getStopActionAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5338:1: (otherlv_3= 'predecessor' ( ( ruleEString ) ) )?
+            int alt121=2;
+            int LA121_0 = input.LA(1);
+
+            if ( (LA121_0==84) ) {
+                alt121=1;
+            }
+            switch (alt121) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5338:3: otherlv_3= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_3=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleStopAction11194); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getStopActionAccess().getPredecessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5342:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5343:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5343:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5344:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getStopActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getStopActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleStopAction11217);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5357:4: (otherlv_5= 'successor' ( ( ruleEString ) ) )?
+            int alt122=2;
+            int LA122_0 = input.LA(1);
+
+            if ( (LA122_0==85) ) {
+                alt122=1;
+            }
+            switch (alt122) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5357:6: otherlv_5= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_5=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleStopAction11232); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getStopActionAccess().getSuccessorKeyword_4_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5361:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5362:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5362:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5363:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getStopActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getStopActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleStopAction11255);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleStopAction11269); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getStopActionAccess().getRightCurlyBracketKeyword_5());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleStopAction"
+
+
+    // $ANTLR start "entryRuleAcquireAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5388:1: entryRuleAcquireAction returns [EObject current=null] : iv_ruleAcquireAction= ruleAcquireAction EOF ;
+    public final EObject entryRuleAcquireAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleAcquireAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5389:2: (iv_ruleAcquireAction= ruleAcquireAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5390:2: iv_ruleAcquireAction= ruleAcquireAction EOF
+            {
+             newCompositeNode(grammarAccess.getAcquireActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleAcquireAction_in_entryRuleAcquireAction11305);
+            iv_ruleAcquireAction=ruleAcquireAction();
+
+            state._fsp--;
+
+             current =iv_ruleAcquireAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAcquireAction11315); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleAcquireAction"
+
+
+    // $ANTLR start "ruleAcquireAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5397:1: ruleAcquireAction returns [EObject current=null] : (otherlv_0= 'AcquireAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' ) ;
+    public final EObject ruleAcquireAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5400:28: ( (otherlv_0= 'AcquireAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5401:1: (otherlv_0= 'AcquireAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5401:1: (otherlv_0= 'AcquireAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5401:3: otherlv_0= 'AcquireAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}'
+            {
+            otherlv_0=(Token)match(input,89,FollowSets000.FOLLOW_89_in_ruleAcquireAction11352); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getAcquireActionAccess().getAcquireActionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleAcquireAction11364); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getAcquireActionAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5409:1: (otherlv_2= 'predecessor' ( ( ruleEString ) ) )?
+            int alt123=2;
+            int LA123_0 = input.LA(1);
+
+            if ( (LA123_0==84) ) {
+                alt123=1;
+            }
+            switch (alt123) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5409:3: otherlv_2= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleAcquireAction11377); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getAcquireActionAccess().getPredecessorKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5413:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5414:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5414:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5415:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getAcquireActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getAcquireActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAcquireAction11400);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5428:4: (otherlv_4= 'successor' ( ( ruleEString ) ) )?
+            int alt124=2;
+            int LA124_0 = input.LA(1);
+
+            if ( (LA124_0==85) ) {
+                alt124=1;
+            }
+            switch (alt124) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5428:6: otherlv_4= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_4=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleAcquireAction11415); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getAcquireActionAccess().getSuccessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5432:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5433:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5433:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5434:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getAcquireActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getAcquireActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAcquireAction11438);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,90,FollowSets000.FOLLOW_90_in_ruleAcquireAction11452); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getAcquireActionAccess().getPassiveResourceKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5451:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5452:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5452:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5453:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getAcquireActionRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getAcquireActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAcquireAction11475);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleAcquireAction11487); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getAcquireActionAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleAcquireAction"
+
+
+    // $ANTLR start "entryRuleReleaseAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5478:1: entryRuleReleaseAction returns [EObject current=null] : iv_ruleReleaseAction= ruleReleaseAction EOF ;
+    public final EObject entryRuleReleaseAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleReleaseAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5479:2: (iv_ruleReleaseAction= ruleReleaseAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5480:2: iv_ruleReleaseAction= ruleReleaseAction EOF
+            {
+             newCompositeNode(grammarAccess.getReleaseActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleReleaseAction_in_entryRuleReleaseAction11523);
+            iv_ruleReleaseAction=ruleReleaseAction();
+
+            state._fsp--;
+
+             current =iv_ruleReleaseAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleReleaseAction11533); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleReleaseAction"
+
+
+    // $ANTLR start "ruleReleaseAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5487:1: ruleReleaseAction returns [EObject current=null] : (otherlv_0= 'ReleaseAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' ) ;
+    public final EObject ruleReleaseAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5490:28: ( (otherlv_0= 'ReleaseAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5491:1: (otherlv_0= 'ReleaseAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5491:1: (otherlv_0= 'ReleaseAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5491:3: otherlv_0= 'ReleaseAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'passiveResource' ( ( ruleEString ) ) otherlv_8= '}'
+            {
+            otherlv_0=(Token)match(input,91,FollowSets000.FOLLOW_91_in_ruleReleaseAction11570); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getReleaseActionAccess().getReleaseActionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleReleaseAction11582); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getReleaseActionAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5499:1: (otherlv_2= 'predecessor' ( ( ruleEString ) ) )?
+            int alt125=2;
+            int LA125_0 = input.LA(1);
+
+            if ( (LA125_0==84) ) {
+                alt125=1;
+            }
+            switch (alt125) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5499:3: otherlv_2= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleReleaseAction11595); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getReleaseActionAccess().getPredecessorKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5503:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5504:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5504:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5505:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getReleaseActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getReleaseActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleReleaseAction11618);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5518:4: (otherlv_4= 'successor' ( ( ruleEString ) ) )?
+            int alt126=2;
+            int LA126_0 = input.LA(1);
+
+            if ( (LA126_0==85) ) {
+                alt126=1;
+            }
+            switch (alt126) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5518:6: otherlv_4= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_4=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleReleaseAction11633); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getReleaseActionAccess().getSuccessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5522:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5523:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5523:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5524:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getReleaseActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getReleaseActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleReleaseAction11656);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,90,FollowSets000.FOLLOW_90_in_ruleReleaseAction11670); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getReleaseActionAccess().getPassiveResourceKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5541:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5542:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5542:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5543:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getReleaseActionRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getReleaseActionAccess().getPassiveResourcePassiveResourceSpecificationCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleReleaseAction11693);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleReleaseAction11705); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getReleaseActionAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleReleaseAction"
+
+
+    // $ANTLR start "entryRuleInternalAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5568:1: entryRuleInternalAction returns [EObject current=null] : iv_ruleInternalAction= ruleInternalAction EOF ;
+    public final EObject entryRuleInternalAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleInternalAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5569:2: (iv_ruleInternalAction= ruleInternalAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5570:2: iv_ruleInternalAction= ruleInternalAction EOF
+            {
+             newCompositeNode(grammarAccess.getInternalActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleInternalAction_in_entryRuleInternalAction11741);
+            iv_ruleInternalAction=ruleInternalAction();
+
+            state._fsp--;
+
+             current =iv_ruleInternalAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInternalAction11751); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleInternalAction"
+
+
+    // $ANTLR start "ruleInternalAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5577:1: ruleInternalAction returns [EObject current=null] : ( () otherlv_1= 'InternalAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'resourceDemandSpecification' otherlv_8= '{' ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) ) (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) ;
+    public final EObject ruleInternalAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        EObject lv_resourceDemandSpecification_9_0 = null;
+
+        EObject lv_resourceDemandSpecification_11_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5580:28: ( ( () otherlv_1= 'InternalAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'resourceDemandSpecification' otherlv_8= '{' ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) ) (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5581:1: ( () otherlv_1= 'InternalAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'resourceDemandSpecification' otherlv_8= '{' ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) ) (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5581:1: ( () otherlv_1= 'InternalAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'resourceDemandSpecification' otherlv_8= '{' ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) ) (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5581:2: () otherlv_1= 'InternalAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'resourceDemandSpecification' otherlv_8= '{' ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) ) (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )* otherlv_12= '}' )? otherlv_13= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5581:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5582:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getInternalActionAccess().getInternalActionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,92,FollowSets000.FOLLOW_92_in_ruleInternalAction11797); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getInternalActionAccess().getInternalActionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleInternalAction11809); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getInternalActionAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5595:1: (otherlv_3= 'predecessor' ( ( ruleEString ) ) )?
+            int alt127=2;
+            int LA127_0 = input.LA(1);
+
+            if ( (LA127_0==84) ) {
+                alt127=1;
+            }
+            switch (alt127) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5595:3: otherlv_3= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_3=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleInternalAction11822); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getInternalActionAccess().getPredecessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5599:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5600:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5600:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5601:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getInternalActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getInternalActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInternalAction11845);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5614:4: (otherlv_5= 'successor' ( ( ruleEString ) ) )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
+
+            if ( (LA128_0==85) ) {
+                alt128=1;
+            }
+            switch (alt128) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5614:6: otherlv_5= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_5=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleInternalAction11860); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getInternalActionAccess().getSuccessorKeyword_4_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5618:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5619:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5619:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5620:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getInternalActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getInternalActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleInternalAction11883);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5633:4: (otherlv_7= 'resourceDemandSpecification' otherlv_8= '{' ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) ) (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )* otherlv_12= '}' )?
+            int alt130=2;
+            int LA130_0 = input.LA(1);
+
+            if ( (LA130_0==54) ) {
+                alt130=1;
+            }
+            switch (alt130) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5633:6: otherlv_7= 'resourceDemandSpecification' otherlv_8= '{' ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) ) (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )* otherlv_12= '}'
+                    {
+                    otherlv_7=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleInternalAction11898); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getInternalActionAccess().getResourceDemandSpecificationKeyword_5_0());
+                        
+                    otherlv_8=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleInternalAction11910); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getInternalActionAccess().getLeftCurlyBracketKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5641:1: ( (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5642:1: (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5642:1: (lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5643:3: lv_resourceDemandSpecification_9_0= ruleResourceDemandSpecification
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getInternalActionAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleResourceDemandSpecification_in_ruleInternalAction11931);
+                    lv_resourceDemandSpecification_9_0=ruleResourceDemandSpecification();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getInternalActionRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"resourceDemandSpecification",
+                            		lv_resourceDemandSpecification_9_0, 
+                            		"ResourceDemandSpecification");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5659:2: (otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) ) )*
+                    loop129:
+                    do {
+                        int alt129=2;
+                        int LA129_0 = input.LA(1);
+
+                        if ( (LA129_0==15) ) {
+                            alt129=1;
+                        }
+
+
+                        switch (alt129) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5659:4: otherlv_10= ',' ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleInternalAction11944); 
+
+                    	        	newLeafNode(otherlv_10, grammarAccess.getInternalActionAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5663:1: ( (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5664:1: (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5664:1: (lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5665:3: lv_resourceDemandSpecification_11_0= ruleResourceDemandSpecification
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getInternalActionAccess().getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleResourceDemandSpecification_in_ruleInternalAction11965);
+                    	    lv_resourceDemandSpecification_11_0=ruleResourceDemandSpecification();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getInternalActionRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"resourceDemandSpecification",
+                    	            		lv_resourceDemandSpecification_11_0, 
+                    	            		"ResourceDemandSpecification");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop129;
+                        }
+                    } while (true);
+
+                    otherlv_12=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleInternalAction11979); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getInternalActionAccess().getRightCurlyBracketKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_13=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleInternalAction11993); 
+
+                	newLeafNode(otherlv_13, grammarAccess.getInternalActionAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleInternalAction"
+
+
+    // $ANTLR start "entryRuleForkAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5697:1: entryRuleForkAction returns [EObject current=null] : iv_ruleForkAction= ruleForkAction EOF ;
+    public final EObject entryRuleForkAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleForkAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5698:2: (iv_ruleForkAction= ruleForkAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5699:2: iv_ruleForkAction= ruleForkAction EOF
+            {
+             newCompositeNode(grammarAccess.getForkActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleForkAction_in_entryRuleForkAction12029);
+            iv_ruleForkAction=ruleForkAction();
+
+            state._fsp--;
+
+             current =iv_ruleForkAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForkAction12039); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleForkAction"
+
+
+    // $ANTLR start "ruleForkAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5706:1: ruleForkAction returns [EObject current=null] : ( ( (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' ) ) otherlv_1= 'ForkAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'forkedBehaviors' otherlv_8= '{' ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) ) (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) ;
+    public final EObject ruleForkAction() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_withSynchronizationBarrier_0_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        EObject lv_forkedBehaviors_9_0 = null;
+
+        EObject lv_forkedBehaviors_11_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5709:28: ( ( ( (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' ) ) otherlv_1= 'ForkAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'forkedBehaviors' otherlv_8= '{' ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) ) (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )* otherlv_12= '}' )? otherlv_13= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5710:1: ( ( (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' ) ) otherlv_1= 'ForkAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'forkedBehaviors' otherlv_8= '{' ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) ) (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5710:1: ( ( (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' ) ) otherlv_1= 'ForkAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'forkedBehaviors' otherlv_8= '{' ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) ) (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )* otherlv_12= '}' )? otherlv_13= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5710:2: ( (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' ) ) otherlv_1= 'ForkAction' otherlv_2= '{' (otherlv_3= 'predecessor' ( ( ruleEString ) ) )? (otherlv_5= 'successor' ( ( ruleEString ) ) )? (otherlv_7= 'forkedBehaviors' otherlv_8= '{' ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) ) (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )* otherlv_12= '}' )? otherlv_13= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5710:2: ( (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5711:1: (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5711:1: (lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5712:3: lv_withSynchronizationBarrier_0_0= 'withSynchronizationBarrier'
+            {
+            lv_withSynchronizationBarrier_0_0=(Token)match(input,93,FollowSets000.FOLLOW_93_in_ruleForkAction12082); 
+
+                    newLeafNode(lv_withSynchronizationBarrier_0_0, grammarAccess.getForkActionAccess().getWithSynchronizationBarrierWithSynchronizationBarrierKeyword_0_0());
+                
+
+            	        if (current==null) {
+            	            current = createModelElement(grammarAccess.getForkActionRule());
+            	        }
+                   		setWithLastConsumed(current, "withSynchronizationBarrier", true, "withSynchronizationBarrier");
+            	    
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,94,FollowSets000.FOLLOW_94_in_ruleForkAction12107); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getForkActionAccess().getForkActionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleForkAction12119); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getForkActionAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5733:1: (otherlv_3= 'predecessor' ( ( ruleEString ) ) )?
+            int alt131=2;
+            int LA131_0 = input.LA(1);
+
+            if ( (LA131_0==84) ) {
+                alt131=1;
+            }
+            switch (alt131) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5733:3: otherlv_3= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_3=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleForkAction12132); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getForkActionAccess().getPredecessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5737:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5738:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5738:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5739:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getForkActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getForkActionAccess().getPredecessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleForkAction12155);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5752:4: (otherlv_5= 'successor' ( ( ruleEString ) ) )?
+            int alt132=2;
+            int LA132_0 = input.LA(1);
+
+            if ( (LA132_0==85) ) {
+                alt132=1;
+            }
+            switch (alt132) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5752:6: otherlv_5= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_5=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleForkAction12170); 
+
+                        	newLeafNode(otherlv_5, grammarAccess.getForkActionAccess().getSuccessorKeyword_4_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5756:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5757:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5757:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5758:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getForkActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getForkActionAccess().getSuccessorAbstractActionCrossReference_4_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleForkAction12193);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5771:4: (otherlv_7= 'forkedBehaviors' otherlv_8= '{' ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) ) (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )* otherlv_12= '}' )?
+            int alt134=2;
+            int LA134_0 = input.LA(1);
+
+            if ( (LA134_0==95) ) {
+                alt134=1;
+            }
+            switch (alt134) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5771:6: otherlv_7= 'forkedBehaviors' otherlv_8= '{' ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) ) (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )* otherlv_12= '}'
+                    {
+                    otherlv_7=(Token)match(input,95,FollowSets000.FOLLOW_95_in_ruleForkAction12208); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getForkActionAccess().getForkedBehaviorsKeyword_5_0());
+                        
+                    otherlv_8=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleForkAction12220); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getForkActionAccess().getLeftCurlyBracketKeyword_5_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5779:1: ( (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5780:1: (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5780:1: (lv_forkedBehaviors_9_0= ruleComponentInternalBehavior )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5781:3: lv_forkedBehaviors_9_0= ruleComponentInternalBehavior
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getForkActionAccess().getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_in_ruleForkAction12241);
+                    lv_forkedBehaviors_9_0=ruleComponentInternalBehavior();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getForkActionRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"forkedBehaviors",
+                            		lv_forkedBehaviors_9_0, 
+                            		"ComponentInternalBehavior");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5797:2: (otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) ) )*
+                    loop133:
+                    do {
+                        int alt133=2;
+                        int LA133_0 = input.LA(1);
+
+                        if ( (LA133_0==15) ) {
+                            alt133=1;
+                        }
+
+
+                        switch (alt133) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5797:4: otherlv_10= ',' ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleForkAction12254); 
+
+                    	        	newLeafNode(otherlv_10, grammarAccess.getForkActionAccess().getCommaKeyword_5_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5801:1: ( (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5802:1: (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5802:1: (lv_forkedBehaviors_11_0= ruleComponentInternalBehavior )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5803:3: lv_forkedBehaviors_11_0= ruleComponentInternalBehavior
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getForkActionAccess().getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_in_ruleForkAction12275);
+                    	    lv_forkedBehaviors_11_0=ruleComponentInternalBehavior();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getForkActionRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"forkedBehaviors",
+                    	            		lv_forkedBehaviors_11_0, 
+                    	            		"ComponentInternalBehavior");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop133;
+                        }
+                    } while (true);
+
+                    otherlv_12=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleForkAction12289); 
+
+                        	newLeafNode(otherlv_12, grammarAccess.getForkActionAccess().getRightCurlyBracketKeyword_5_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_13=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleForkAction12303); 
+
+                	newLeafNode(otherlv_13, grammarAccess.getForkActionAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleForkAction"
+
+
+    // $ANTLR start "entryRuleBranchAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5835:1: entryRuleBranchAction returns [EObject current=null] : iv_ruleBranchAction= ruleBranchAction EOF ;
+    public final EObject entryRuleBranchAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBranchAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5836:2: (iv_ruleBranchAction= ruleBranchAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5837:2: iv_ruleBranchAction= ruleBranchAction EOF
+            {
+             newCompositeNode(grammarAccess.getBranchActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBranchAction_in_entryRuleBranchAction12339);
+            iv_ruleBranchAction=ruleBranchAction();
+
+            state._fsp--;
+
+             current =iv_ruleBranchAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBranchAction12349); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBranchAction"
+
+
+    // $ANTLR start "ruleBranchAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5844:1: ruleBranchAction returns [EObject current=null] : (otherlv_0= 'BranchAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? (otherlv_6= 'branches' otherlv_7= '{' ( (lv_branches_8_0= ruleBranchTransition ) ) (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )* otherlv_11= '}' )? otherlv_12= 'branchProbabilities' ( (lv_branchProbabilities_13_0= ruleBranchProbabilities ) ) otherlv_14= '}' ) ;
+    public final EObject ruleBranchAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        EObject lv_branches_8_0 = null;
+
+        EObject lv_branches_10_0 = null;
+
+        EObject lv_branchProbabilities_13_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5847:28: ( (otherlv_0= 'BranchAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? (otherlv_6= 'branches' otherlv_7= '{' ( (lv_branches_8_0= ruleBranchTransition ) ) (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )* otherlv_11= '}' )? otherlv_12= 'branchProbabilities' ( (lv_branchProbabilities_13_0= ruleBranchProbabilities ) ) otherlv_14= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5848:1: (otherlv_0= 'BranchAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? (otherlv_6= 'branches' otherlv_7= '{' ( (lv_branches_8_0= ruleBranchTransition ) ) (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )* otherlv_11= '}' )? otherlv_12= 'branchProbabilities' ( (lv_branchProbabilities_13_0= ruleBranchProbabilities ) ) otherlv_14= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5848:1: (otherlv_0= 'BranchAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? (otherlv_6= 'branches' otherlv_7= '{' ( (lv_branches_8_0= ruleBranchTransition ) ) (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )* otherlv_11= '}' )? otherlv_12= 'branchProbabilities' ( (lv_branchProbabilities_13_0= ruleBranchProbabilities ) ) otherlv_14= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5848:3: otherlv_0= 'BranchAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? (otherlv_6= 'branches' otherlv_7= '{' ( (lv_branches_8_0= ruleBranchTransition ) ) (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )* otherlv_11= '}' )? otherlv_12= 'branchProbabilities' ( (lv_branchProbabilities_13_0= ruleBranchProbabilities ) ) otherlv_14= '}'
+            {
+            otherlv_0=(Token)match(input,96,FollowSets000.FOLLOW_96_in_ruleBranchAction12386); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getBranchActionAccess().getBranchActionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBranchAction12398); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5856:1: (otherlv_2= 'predecessor' ( ( ruleEString ) ) )?
+            int alt135=2;
+            int LA135_0 = input.LA(1);
+
+            if ( (LA135_0==84) ) {
+                alt135=1;
+            }
+            switch (alt135) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5856:3: otherlv_2= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleBranchAction12411); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getBranchActionAccess().getPredecessorKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5860:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5861:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5861:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5862:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getBranchActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getBranchActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBranchAction12434);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5875:4: (otherlv_4= 'successor' ( ( ruleEString ) ) )?
+            int alt136=2;
+            int LA136_0 = input.LA(1);
+
+            if ( (LA136_0==85) ) {
+                alt136=1;
+            }
+            switch (alt136) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5875:6: otherlv_4= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_4=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleBranchAction12449); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getBranchActionAccess().getSuccessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5879:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5880:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5880:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5881:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getBranchActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getBranchActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBranchAction12472);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5894:4: (otherlv_6= 'branches' otherlv_7= '{' ( (lv_branches_8_0= ruleBranchTransition ) ) (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )* otherlv_11= '}' )?
+            int alt138=2;
+            int LA138_0 = input.LA(1);
+
+            if ( (LA138_0==97) ) {
+                alt138=1;
+            }
+            switch (alt138) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5894:6: otherlv_6= 'branches' otherlv_7= '{' ( (lv_branches_8_0= ruleBranchTransition ) ) (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )* otherlv_11= '}'
+                    {
+                    otherlv_6=(Token)match(input,97,FollowSets000.FOLLOW_97_in_ruleBranchAction12487); 
+
+                        	newLeafNode(otherlv_6, grammarAccess.getBranchActionAccess().getBranchesKeyword_4_0());
+                        
+                    otherlv_7=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBranchAction12499); 
+
+                        	newLeafNode(otherlv_7, grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_4_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5902:1: ( (lv_branches_8_0= ruleBranchTransition ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5903:1: (lv_branches_8_0= ruleBranchTransition )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5903:1: (lv_branches_8_0= ruleBranchTransition )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5904:3: lv_branches_8_0= ruleBranchTransition
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBranchActionAccess().getBranchesBranchTransitionParserRuleCall_4_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleBranchTransition_in_ruleBranchAction12520);
+                    lv_branches_8_0=ruleBranchTransition();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBranchActionRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"branches",
+                            		lv_branches_8_0, 
+                            		"BranchTransition");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5920:2: (otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) ) )*
+                    loop137:
+                    do {
+                        int alt137=2;
+                        int LA137_0 = input.LA(1);
+
+                        if ( (LA137_0==15) ) {
+                            alt137=1;
+                        }
+
+
+                        switch (alt137) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5920:4: otherlv_9= ',' ( (lv_branches_10_0= ruleBranchTransition ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBranchAction12533); 
+
+                    	        	newLeafNode(otherlv_9, grammarAccess.getBranchActionAccess().getCommaKeyword_4_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5924:1: ( (lv_branches_10_0= ruleBranchTransition ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5925:1: (lv_branches_10_0= ruleBranchTransition )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5925:1: (lv_branches_10_0= ruleBranchTransition )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5926:3: lv_branches_10_0= ruleBranchTransition
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBranchActionAccess().getBranchesBranchTransitionParserRuleCall_4_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBranchTransition_in_ruleBranchAction12554);
+                    	    lv_branches_10_0=ruleBranchTransition();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBranchActionRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"branches",
+                    	            		lv_branches_10_0, 
+                    	            		"BranchTransition");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop137;
+                        }
+                    } while (true);
+
+                    otherlv_11=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBranchAction12568); 
+
+                        	newLeafNode(otherlv_11, grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_4_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_12=(Token)match(input,98,FollowSets000.FOLLOW_98_in_ruleBranchAction12582); 
+
+                	newLeafNode(otherlv_12, grammarAccess.getBranchActionAccess().getBranchProbabilitiesKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5950:1: ( (lv_branchProbabilities_13_0= ruleBranchProbabilities ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5951:1: (lv_branchProbabilities_13_0= ruleBranchProbabilities )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5951:1: (lv_branchProbabilities_13_0= ruleBranchProbabilities )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5952:3: lv_branchProbabilities_13_0= ruleBranchProbabilities
+            {
+             
+            	        newCompositeNode(grammarAccess.getBranchActionAccess().getBranchProbabilitiesBranchProbabilitiesParserRuleCall_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleBranchProbabilities_in_ruleBranchAction12603);
+            lv_branchProbabilities_13_0=ruleBranchProbabilities();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBranchActionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"branchProbabilities",
+                    		lv_branchProbabilities_13_0, 
+                    		"BranchProbabilities");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_14=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBranchAction12615); 
+
+                	newLeafNode(otherlv_14, grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBranchAction"
+
+
+    // $ANTLR start "entryRuleLoopAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5980:1: entryRuleLoopAction returns [EObject current=null] : iv_ruleLoopAction= ruleLoopAction EOF ;
+    public final EObject entryRuleLoopAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleLoopAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5981:2: (iv_ruleLoopAction= ruleLoopAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5982:2: iv_ruleLoopAction= ruleLoopAction EOF
+            {
+             newCompositeNode(grammarAccess.getLoopActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleLoopAction_in_entryRuleLoopAction12651);
+            iv_ruleLoopAction=ruleLoopAction();
+
+            state._fsp--;
+
+             current =iv_ruleLoopAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLoopAction12661); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLoopAction"
+
+
+    // $ANTLR start "ruleLoopAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5989:1: ruleLoopAction returns [EObject current=null] : (otherlv_0= 'LoopAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'loopBodyBehavior' ( (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior ) ) otherlv_8= 'loopIterationCountDistribution' ( (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution ) ) otherlv_10= '}' ) ;
+    public final EObject ruleLoopAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        EObject lv_loopBodyBehavior_7_0 = null;
+
+        EObject lv_loopIterationCountDistribution_9_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5992:28: ( (otherlv_0= 'LoopAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'loopBodyBehavior' ( (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior ) ) otherlv_8= 'loopIterationCountDistribution' ( (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution ) ) otherlv_10= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5993:1: (otherlv_0= 'LoopAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'loopBodyBehavior' ( (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior ) ) otherlv_8= 'loopIterationCountDistribution' ( (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution ) ) otherlv_10= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5993:1: (otherlv_0= 'LoopAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'loopBodyBehavior' ( (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior ) ) otherlv_8= 'loopIterationCountDistribution' ( (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution ) ) otherlv_10= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:5993:3: otherlv_0= 'LoopAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'loopBodyBehavior' ( (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior ) ) otherlv_8= 'loopIterationCountDistribution' ( (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution ) ) otherlv_10= '}'
+            {
+            otherlv_0=(Token)match(input,99,FollowSets000.FOLLOW_99_in_ruleLoopAction12698); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getLoopActionAccess().getLoopActionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleLoopAction12710); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6001:1: (otherlv_2= 'predecessor' ( ( ruleEString ) ) )?
+            int alt139=2;
+            int LA139_0 = input.LA(1);
+
+            if ( (LA139_0==84) ) {
+                alt139=1;
+            }
+            switch (alt139) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6001:3: otherlv_2= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleLoopAction12723); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getLoopActionAccess().getPredecessorKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6005:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6006:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6006:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6007:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getLoopActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getLoopActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleLoopAction12746);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6020:4: (otherlv_4= 'successor' ( ( ruleEString ) ) )?
+            int alt140=2;
+            int LA140_0 = input.LA(1);
+
+            if ( (LA140_0==85) ) {
+                alt140=1;
+            }
+            switch (alt140) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6020:6: otherlv_4= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_4=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleLoopAction12761); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getLoopActionAccess().getSuccessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6024:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6025:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6025:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6026:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getLoopActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getLoopActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleLoopAction12784);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,100,FollowSets000.FOLLOW_100_in_ruleLoopAction12798); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getLoopActionAccess().getLoopBodyBehaviorKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6043:1: ( (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6044:1: (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6044:1: (lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6045:3: lv_loopBodyBehavior_7_0= ruleComponentInternalBehavior
+            {
+             
+            	        newCompositeNode(grammarAccess.getLoopActionAccess().getLoopBodyBehaviorComponentInternalBehaviorParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_in_ruleLoopAction12819);
+            lv_loopBodyBehavior_7_0=ruleComponentInternalBehavior();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getLoopActionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"loopBodyBehavior",
+                    		lv_loopBodyBehavior_7_0, 
+                    		"ComponentInternalBehavior");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,101,FollowSets000.FOLLOW_101_in_ruleLoopAction12831); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getLoopActionAccess().getLoopIterationCountDistributionKeyword_6());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6065:1: ( (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6066:1: (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6066:1: (lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6067:3: lv_loopIterationCountDistribution_9_0= ruleLoopIterationCountDistribution
+            {
+             
+            	        newCompositeNode(grammarAccess.getLoopActionAccess().getLoopIterationCountDistributionLoopIterationCountDistributionParserRuleCall_7_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleLoopIterationCountDistribution_in_ruleLoopAction12852);
+            lv_loopIterationCountDistribution_9_0=ruleLoopIterationCountDistribution();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getLoopActionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"loopIterationCountDistribution",
+                    		lv_loopIterationCountDistribution_9_0, 
+                    		"LoopIterationCountDistribution");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_10=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleLoopAction12864); 
+
+                	newLeafNode(otherlv_10, grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLoopAction"
+
+
+    // $ANTLR start "entryRuleExternalCallAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6095:1: entryRuleExternalCallAction returns [EObject current=null] : iv_ruleExternalCallAction= ruleExternalCallAction EOF ;
+    public final EObject entryRuleExternalCallAction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExternalCallAction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6096:2: (iv_ruleExternalCallAction= ruleExternalCallAction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6097:2: iv_ruleExternalCallAction= ruleExternalCallAction EOF
+            {
+             newCompositeNode(grammarAccess.getExternalCallActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExternalCallAction_in_entryRuleExternalCallAction12900);
+            iv_ruleExternalCallAction=ruleExternalCallAction();
+
+            state._fsp--;
+
+             current =iv_ruleExternalCallAction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExternalCallAction12910); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExternalCallAction"
+
+
+    // $ANTLR start "ruleExternalCallAction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6104:1: ruleExternalCallAction returns [EObject current=null] : (otherlv_0= 'ExternalCallAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'signature' ( ( ruleEString ) ) otherlv_8= 'requiredRole' ( ( ruleEString ) ) otherlv_10= '}' ) ;
+    public final EObject ruleExternalCallAction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6107:28: ( (otherlv_0= 'ExternalCallAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'signature' ( ( ruleEString ) ) otherlv_8= 'requiredRole' ( ( ruleEString ) ) otherlv_10= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6108:1: (otherlv_0= 'ExternalCallAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'signature' ( ( ruleEString ) ) otherlv_8= 'requiredRole' ( ( ruleEString ) ) otherlv_10= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6108:1: (otherlv_0= 'ExternalCallAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'signature' ( ( ruleEString ) ) otherlv_8= 'requiredRole' ( ( ruleEString ) ) otherlv_10= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6108:3: otherlv_0= 'ExternalCallAction' otherlv_1= '{' (otherlv_2= 'predecessor' ( ( ruleEString ) ) )? (otherlv_4= 'successor' ( ( ruleEString ) ) )? otherlv_6= 'signature' ( ( ruleEString ) ) otherlv_8= 'requiredRole' ( ( ruleEString ) ) otherlv_10= '}'
+            {
+            otherlv_0=(Token)match(input,102,FollowSets000.FOLLOW_102_in_ruleExternalCallAction12947); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getExternalCallActionAccess().getExternalCallActionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExternalCallAction12959); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getExternalCallActionAccess().getLeftCurlyBracketKeyword_1());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6116:1: (otherlv_2= 'predecessor' ( ( ruleEString ) ) )?
+            int alt141=2;
+            int LA141_0 = input.LA(1);
+
+            if ( (LA141_0==84) ) {
+                alt141=1;
+            }
+            switch (alt141) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6116:3: otherlv_2= 'predecessor' ( ( ruleEString ) )
+                    {
+                    otherlv_2=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleExternalCallAction12972); 
+
+                        	newLeafNode(otherlv_2, grammarAccess.getExternalCallActionAccess().getPredecessorKeyword_2_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6120:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6121:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6121:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6122:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getExternalCallActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getPredecessorAbstractActionCrossReference_2_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallAction12995);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6135:4: (otherlv_4= 'successor' ( ( ruleEString ) ) )?
+            int alt142=2;
+            int LA142_0 = input.LA(1);
+
+            if ( (LA142_0==85) ) {
+                alt142=1;
+            }
+            switch (alt142) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6135:6: otherlv_4= 'successor' ( ( ruleEString ) )
+                    {
+                    otherlv_4=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleExternalCallAction13010); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getExternalCallActionAccess().getSuccessorKeyword_3_0());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6139:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6140:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6140:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6141:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getExternalCallActionRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getSuccessorAbstractActionCrossReference_3_1_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallAction13033);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleExternalCallAction13047); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getExternalCallActionAccess().getSignatureKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6158:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6159:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6159:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6160:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallActionRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getSignatureSignatureCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallAction13070);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,103,FollowSets000.FOLLOW_103_in_ruleExternalCallAction13082); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getExternalCallActionAccess().getRequiredRoleKeyword_6());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6177:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6178:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6178:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6179:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCallActionRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCallActionAccess().getRequiredRoleRequiredRoleCrossReference_7_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCallAction13105);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_10=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExternalCallAction13117); 
+
+                	newLeafNode(otherlv_10, grammarAccess.getExternalCallActionAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExternalCallAction"
+
+
+    // $ANTLR start "entryRulePassiveResourceSpecification"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6204:1: entryRulePassiveResourceSpecification returns [EObject current=null] : iv_rulePassiveResourceSpecification= rulePassiveResourceSpecification EOF ;
+    public final EObject entryRulePassiveResourceSpecification() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePassiveResourceSpecification = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6205:2: (iv_rulePassiveResourceSpecification= rulePassiveResourceSpecification EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6206:2: iv_rulePassiveResourceSpecification= rulePassiveResourceSpecification EOF
+            {
+             newCompositeNode(grammarAccess.getPassiveResourceSpecificationRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePassiveResourceSpecification_in_entryRulePassiveResourceSpecification13153);
+            iv_rulePassiveResourceSpecification=rulePassiveResourceSpecification();
+
+            state._fsp--;
+
+             current =iv_rulePassiveResourceSpecification; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePassiveResourceSpecification13163); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePassiveResourceSpecification"
+
+
+    // $ANTLR start "rulePassiveResourceSpecification"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6213:1: rulePassiveResourceSpecification returns [EObject current=null] : (otherlv_0= 'PassiveResourceSpecification' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'passiveResourceType' ( ( ruleEString ) ) otherlv_7= 'capacity' ( (lv_capacity_8_0= rulePassiveResourceCapacity ) ) otherlv_9= '}' ) ;
+    public final EObject rulePassiveResourceSpecification() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_capacity_8_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6216:28: ( (otherlv_0= 'PassiveResourceSpecification' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'passiveResourceType' ( ( ruleEString ) ) otherlv_7= 'capacity' ( (lv_capacity_8_0= rulePassiveResourceCapacity ) ) otherlv_9= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6217:1: (otherlv_0= 'PassiveResourceSpecification' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'passiveResourceType' ( ( ruleEString ) ) otherlv_7= 'capacity' ( (lv_capacity_8_0= rulePassiveResourceCapacity ) ) otherlv_9= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6217:1: (otherlv_0= 'PassiveResourceSpecification' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'passiveResourceType' ( ( ruleEString ) ) otherlv_7= 'capacity' ( (lv_capacity_8_0= rulePassiveResourceCapacity ) ) otherlv_9= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6217:3: otherlv_0= 'PassiveResourceSpecification' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'passiveResourceType' ( ( ruleEString ) ) otherlv_7= 'capacity' ( (lv_capacity_8_0= rulePassiveResourceCapacity ) ) otherlv_9= '}'
+            {
+            otherlv_0=(Token)match(input,104,FollowSets000.FOLLOW_104_in_rulePassiveResourceSpecification13200); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceSpecificationKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6221:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6222:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6222:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6223:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rulePassiveResourceSpecification13221);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPassiveResourceSpecificationRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_rulePassiveResourceSpecification13233); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getPassiveResourceSpecificationAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_rulePassiveResourceSpecification13245); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getPassiveResourceSpecificationAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6247:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6248:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6248:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6249:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rulePassiveResourceSpecification13266);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPassiveResourceSpecificationRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,105,FollowSets000.FOLLOW_105_in_rulePassiveResourceSpecification13278); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypeKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6269:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6270:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6270:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6271:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getPassiveResourceSpecificationRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getPassiveResourceTypePassiveResourceTypeCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rulePassiveResourceSpecification13301);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,106,FollowSets000.FOLLOW_106_in_rulePassiveResourceSpecification13313); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getPassiveResourceSpecificationAccess().getCapacityKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6288:1: ( (lv_capacity_8_0= rulePassiveResourceCapacity ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6289:1: (lv_capacity_8_0= rulePassiveResourceCapacity )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6289:1: (lv_capacity_8_0= rulePassiveResourceCapacity )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6290:3: lv_capacity_8_0= rulePassiveResourceCapacity
+            {
+             
+            	        newCompositeNode(grammarAccess.getPassiveResourceSpecificationAccess().getCapacityPassiveResourceCapacityParserRuleCall_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_rulePassiveResourceCapacity_in_rulePassiveResourceSpecification13334);
+            lv_capacity_8_0=rulePassiveResourceCapacity();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPassiveResourceSpecificationRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"capacity",
+                    		lv_capacity_8_0, 
+                    		"PassiveResourceCapacity");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,16,FollowSets000.FOLLOW_16_in_rulePassiveResourceSpecification13346); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getPassiveResourceSpecificationAccess().getRightCurlyBracketKeyword_9());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePassiveResourceSpecification"
+
+
+    // $ANTLR start "entryRulePassiveResourceCapacity"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6318:1: entryRulePassiveResourceCapacity returns [EObject current=null] : iv_rulePassiveResourceCapacity= rulePassiveResourceCapacity EOF ;
+    public final EObject entryRulePassiveResourceCapacity() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePassiveResourceCapacity = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6319:2: (iv_rulePassiveResourceCapacity= rulePassiveResourceCapacity EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6320:2: iv_rulePassiveResourceCapacity= rulePassiveResourceCapacity EOF
+            {
+             newCompositeNode(grammarAccess.getPassiveResourceCapacityRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePassiveResourceCapacity_in_entryRulePassiveResourceCapacity13382);
+            iv_rulePassiveResourceCapacity=rulePassiveResourceCapacity();
+
+            state._fsp--;
+
+             current =iv_rulePassiveResourceCapacity; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePassiveResourceCapacity13392); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePassiveResourceCapacity"
+
+
+    // $ANTLR start "rulePassiveResourceCapacity"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6327:1: rulePassiveResourceCapacity returns [EObject current=null] : (otherlv_0= 'PassiveResourceCapacity' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'capacity' ( (lv_capacity_6_0= ruleEBigInteger ) ) otherlv_7= '}' ) ;
+    public final EObject rulePassiveResourceCapacity() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        AntlrDatatypeRuleToken lv_capacity_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6330:28: ( (otherlv_0= 'PassiveResourceCapacity' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'capacity' ( (lv_capacity_6_0= ruleEBigInteger ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6331:1: (otherlv_0= 'PassiveResourceCapacity' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'capacity' ( (lv_capacity_6_0= ruleEBigInteger ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6331:1: (otherlv_0= 'PassiveResourceCapacity' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'capacity' ( (lv_capacity_6_0= ruleEBigInteger ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6331:3: otherlv_0= 'PassiveResourceCapacity' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'capacity' ( (lv_capacity_6_0= ruleEBigInteger ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,107,FollowSets000.FOLLOW_107_in_rulePassiveResourceCapacity13429); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getPassiveResourceCapacityAccess().getPassiveResourceCapacityKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6335:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6336:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6336:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6337:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getPassiveResourceCapacityAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rulePassiveResourceCapacity13450);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPassiveResourceCapacityRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_rulePassiveResourceCapacity13462); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getPassiveResourceCapacityAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_rulePassiveResourceCapacity13474); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getPassiveResourceCapacityAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6361:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6362:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6362:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6363:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getPassiveResourceCapacityAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_rulePassiveResourceCapacity13495);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPassiveResourceCapacityRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,106,FollowSets000.FOLLOW_106_in_rulePassiveResourceCapacity13507); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getPassiveResourceCapacityAccess().getCapacityKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6383:1: ( (lv_capacity_6_0= ruleEBigInteger ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6384:1: (lv_capacity_6_0= ruleEBigInteger )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6384:1: (lv_capacity_6_0= ruleEBigInteger )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6385:3: lv_capacity_6_0= ruleEBigInteger
+            {
+             
+            	        newCompositeNode(grammarAccess.getPassiveResourceCapacityAccess().getCapacityEBigIntegerParserRuleCall_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigInteger_in_rulePassiveResourceCapacity13528);
+            lv_capacity_6_0=ruleEBigInteger();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getPassiveResourceCapacityRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"capacity",
+                    		lv_capacity_6_0, 
+                    		"EBigInteger");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_rulePassiveResourceCapacity13540); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getPassiveResourceCapacityAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePassiveResourceCapacity"
+
+
+    // $ANTLR start "entryRuleEBigInteger"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6415:1: entryRuleEBigInteger returns [String current=null] : iv_ruleEBigInteger= ruleEBigInteger EOF ;
+    public final String entryRuleEBigInteger() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleEBigInteger = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6416:2: (iv_ruleEBigInteger= ruleEBigInteger EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6417:2: iv_ruleEBigInteger= ruleEBigInteger EOF
+            {
+             newCompositeNode(grammarAccess.getEBigIntegerRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigInteger_in_entryRuleEBigInteger13579);
+            iv_ruleEBigInteger=ruleEBigInteger();
+
+            state._fsp--;
+
+             current =iv_ruleEBigInteger.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEBigInteger13590); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEBigInteger"
+
+
+    // $ANTLR start "ruleEBigInteger"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6424:1: ruleEBigInteger returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT ) ;
+    public final AntlrDatatypeRuleToken ruleEBigInteger() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        Token this_INT_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6427:28: ( ( (kw= '-' )? this_INT_1= RULE_INT ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6428:1: ( (kw= '-' )? this_INT_1= RULE_INT )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6428:1: ( (kw= '-' )? this_INT_1= RULE_INT )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6428:2: (kw= '-' )? this_INT_1= RULE_INT
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6428:2: (kw= '-' )?
+            int alt143=2;
+            int LA143_0 = input.LA(1);
+
+            if ( (LA143_0==108) ) {
+                alt143=1;
+            }
+            switch (alt143) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6429:2: kw= '-'
+                    {
+                    kw=(Token)match(input,108,FollowSets000.FOLLOW_108_in_ruleEBigInteger13629); 
+
+                            current.merge(kw);
+                            newLeafNode(kw, grammarAccess.getEBigIntegerAccess().getHyphenMinusKeyword_0()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+            this_INT_1=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleEBigInteger13646); 
+
+            		current.merge(this_INT_1);
+                
+             
+                newLeafNode(this_INT_1, grammarAccess.getEBigIntegerAccess().getINTTerminalRuleCall_1()); 
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEBigInteger"
+
+
+    // $ANTLR start "entryRuleResourceDemandSpecification"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6449:1: entryRuleResourceDemandSpecification returns [EObject current=null] : iv_ruleResourceDemandSpecification= ruleResourceDemandSpecification EOF ;
+    public final EObject entryRuleResourceDemandSpecification() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleResourceDemandSpecification = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6450:2: (iv_ruleResourceDemandSpecification= ruleResourceDemandSpecification EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6451:2: iv_ruleResourceDemandSpecification= ruleResourceDemandSpecification EOF
+            {
+             newCompositeNode(grammarAccess.getResourceDemandSpecificationRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleResourceDemandSpecification_in_entryRuleResourceDemandSpecification13691);
+            iv_ruleResourceDemandSpecification=ruleResourceDemandSpecification();
+
+            state._fsp--;
+
+             current =iv_ruleResourceDemandSpecification; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleResourceDemandSpecification13701); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleResourceDemandSpecification"
+
+
+    // $ANTLR start "ruleResourceDemandSpecification"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6458:1: ruleResourceDemandSpecification returns [EObject current=null] : (otherlv_0= 'ResourceDemandSpecification' otherlv_1= '{' otherlv_2= 'processingResourceType' ( ( ruleEString ) ) otherlv_4= '}' ) ;
+    public final EObject ruleResourceDemandSpecification() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6461:28: ( (otherlv_0= 'ResourceDemandSpecification' otherlv_1= '{' otherlv_2= 'processingResourceType' ( ( ruleEString ) ) otherlv_4= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6462:1: (otherlv_0= 'ResourceDemandSpecification' otherlv_1= '{' otherlv_2= 'processingResourceType' ( ( ruleEString ) ) otherlv_4= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6462:1: (otherlv_0= 'ResourceDemandSpecification' otherlv_1= '{' otherlv_2= 'processingResourceType' ( ( ruleEString ) ) otherlv_4= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6462:3: otherlv_0= 'ResourceDemandSpecification' otherlv_1= '{' otherlv_2= 'processingResourceType' ( ( ruleEString ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,109,FollowSets000.FOLLOW_109_in_ruleResourceDemandSpecification13738); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getResourceDemandSpecificationAccess().getResourceDemandSpecificationKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleResourceDemandSpecification13750); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getResourceDemandSpecificationAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,110,FollowSets000.FOLLOW_110_in_ruleResourceDemandSpecification13762); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6474:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6475:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6475:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6476:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getResourceDemandSpecificationRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getResourceDemandSpecificationAccess().getProcessingResourceTypeProcessingResourceTypeCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleResourceDemandSpecification13785);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleResourceDemandSpecification13797); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getResourceDemandSpecificationAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleResourceDemandSpecification"
+
+
+    // $ANTLR start "entryRuleProcessingResourceType_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6501:1: entryRuleProcessingResourceType_Impl returns [EObject current=null] : iv_ruleProcessingResourceType_Impl= ruleProcessingResourceType_Impl EOF ;
+    public final EObject entryRuleProcessingResourceType_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProcessingResourceType_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6502:2: (iv_ruleProcessingResourceType_Impl= ruleProcessingResourceType_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6503:2: iv_ruleProcessingResourceType_Impl= ruleProcessingResourceType_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getProcessingResourceType_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProcessingResourceType_Impl_in_entryRuleProcessingResourceType_Impl13833);
+            iv_ruleProcessingResourceType_Impl=ruleProcessingResourceType_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleProcessingResourceType_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProcessingResourceType_Impl13843); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProcessingResourceType_Impl"
+
+
+    // $ANTLR start "ruleProcessingResourceType_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6510:1: ruleProcessingResourceType_Impl returns [EObject current=null] : (otherlv_0= 'ProcessingResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' ) ;
+    public final EObject ruleProcessingResourceType_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6513:28: ( (otherlv_0= 'ProcessingResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6514:1: (otherlv_0= 'ProcessingResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6514:1: (otherlv_0= 'ProcessingResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6514:3: otherlv_0= 'ProcessingResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}'
+            {
+            otherlv_0=(Token)match(input,111,FollowSets000.FOLLOW_111_in_ruleProcessingResourceType_Impl13880); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getProcessingResourceType_ImplAccess().getProcessingResourceTypeKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6518:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6519:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6519:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6520:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getProcessingResourceType_ImplAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProcessingResourceType_Impl13901);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProcessingResourceType_ImplRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProcessingResourceType_Impl13913); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getProcessingResourceType_ImplAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleProcessingResourceType_Impl13925); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getProcessingResourceType_ImplAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6544:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6545:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6545:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6546:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getProcessingResourceType_ImplAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProcessingResourceType_Impl13946);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProcessingResourceType_ImplRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleProcessingResourceType_Impl13958); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getProcessingResourceType_ImplAccess().getRightCurlyBracketKeyword_5());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProcessingResourceType_Impl"
+
+
+    // $ANTLR start "entryRuleCommunicationLinkResourceType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6574:1: entryRuleCommunicationLinkResourceType returns [EObject current=null] : iv_ruleCommunicationLinkResourceType= ruleCommunicationLinkResourceType EOF ;
+    public final EObject entryRuleCommunicationLinkResourceType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCommunicationLinkResourceType = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6575:2: (iv_ruleCommunicationLinkResourceType= ruleCommunicationLinkResourceType EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6576:2: iv_ruleCommunicationLinkResourceType= ruleCommunicationLinkResourceType EOF
+            {
+             newCompositeNode(grammarAccess.getCommunicationLinkResourceTypeRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCommunicationLinkResourceType_in_entryRuleCommunicationLinkResourceType13994);
+            iv_ruleCommunicationLinkResourceType=ruleCommunicationLinkResourceType();
+
+            state._fsp--;
+
+             current =iv_ruleCommunicationLinkResourceType; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCommunicationLinkResourceType14004); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCommunicationLinkResourceType"
+
+
+    // $ANTLR start "ruleCommunicationLinkResourceType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6583:1: ruleCommunicationLinkResourceType returns [EObject current=null] : (otherlv_0= 'CommunicationLinkResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' ) ;
+    public final EObject ruleCommunicationLinkResourceType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6586:28: ( (otherlv_0= 'CommunicationLinkResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6587:1: (otherlv_0= 'CommunicationLinkResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6587:1: (otherlv_0= 'CommunicationLinkResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6587:3: otherlv_0= 'CommunicationLinkResourceType' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= '}'
+            {
+            otherlv_0=(Token)match(input,112,FollowSets000.FOLLOW_112_in_ruleCommunicationLinkResourceType14041); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCommunicationLinkResourceTypeAccess().getCommunicationLinkResourceTypeKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6591:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6592:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6592:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6593:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCommunicationLinkResourceTypeAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCommunicationLinkResourceType14062);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCommunicationLinkResourceTypeRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCommunicationLinkResourceType14074); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getCommunicationLinkResourceTypeAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleCommunicationLinkResourceType14086); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getCommunicationLinkResourceTypeAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6617:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6618:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6618:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6619:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getCommunicationLinkResourceTypeAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCommunicationLinkResourceType14107);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCommunicationLinkResourceTypeRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCommunicationLinkResourceType14119); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getCommunicationLinkResourceTypeAccess().getRightCurlyBracketKeyword_5());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCommunicationLinkResourceType"
+
+
+    // $ANTLR start "entryRuleBranchTransition"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6649:1: entryRuleBranchTransition returns [EObject current=null] : iv_ruleBranchTransition= ruleBranchTransition EOF ;
+    public final EObject entryRuleBranchTransition() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBranchTransition = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6650:2: (iv_ruleBranchTransition= ruleBranchTransition EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6651:2: iv_ruleBranchTransition= ruleBranchTransition EOF
+            {
+             newCompositeNode(grammarAccess.getBranchTransitionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBranchTransition_in_entryRuleBranchTransition14157);
+            iv_ruleBranchTransition=ruleBranchTransition();
+
+            state._fsp--;
+
+             current =iv_ruleBranchTransition; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBranchTransition14167); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBranchTransition"
+
+
+    // $ANTLR start "ruleBranchTransition"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6658:1: ruleBranchTransition returns [EObject current=null] : (otherlv_0= 'BranchTransition' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'branchBehavior' ( (lv_branchBehavior_6_0= ruleComponentInternalBehavior ) ) otherlv_7= '}' ) ;
+    public final EObject ruleBranchTransition() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        EObject lv_branchBehavior_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6661:28: ( (otherlv_0= 'BranchTransition' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'branchBehavior' ( (lv_branchBehavior_6_0= ruleComponentInternalBehavior ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6662:1: (otherlv_0= 'BranchTransition' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'branchBehavior' ( (lv_branchBehavior_6_0= ruleComponentInternalBehavior ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6662:1: (otherlv_0= 'BranchTransition' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'branchBehavior' ( (lv_branchBehavior_6_0= ruleComponentInternalBehavior ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6662:3: otherlv_0= 'BranchTransition' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'branchBehavior' ( (lv_branchBehavior_6_0= ruleComponentInternalBehavior ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,113,FollowSets000.FOLLOW_113_in_ruleBranchTransition14204); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getBranchTransitionAccess().getBranchTransitionKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6666:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6667:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6667:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6668:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getBranchTransitionAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBranchTransition14225);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBranchTransitionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBranchTransition14237); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getBranchTransitionAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleBranchTransition14249); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getBranchTransitionAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6692:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6693:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6693:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6694:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getBranchTransitionAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBranchTransition14270);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBranchTransitionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,114,FollowSets000.FOLLOW_114_in_ruleBranchTransition14282); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getBranchTransitionAccess().getBranchBehaviorKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6714:1: ( (lv_branchBehavior_6_0= ruleComponentInternalBehavior ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6715:1: (lv_branchBehavior_6_0= ruleComponentInternalBehavior )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6715:1: (lv_branchBehavior_6_0= ruleComponentInternalBehavior )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6716:3: lv_branchBehavior_6_0= ruleComponentInternalBehavior
+            {
+             
+            	        newCompositeNode(grammarAccess.getBranchTransitionAccess().getBranchBehaviorComponentInternalBehaviorParserRuleCall_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInternalBehavior_in_ruleBranchTransition14303);
+            lv_branchBehavior_6_0=ruleComponentInternalBehavior();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getBranchTransitionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"branchBehavior",
+                    		lv_branchBehavior_6_0, 
+                    		"ComponentInternalBehavior");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBranchTransition14315); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getBranchTransitionAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBranchTransition"
+
+
+    // $ANTLR start "entryRuleBranchProbabilities"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6744:1: entryRuleBranchProbabilities returns [EObject current=null] : iv_ruleBranchProbabilities= ruleBranchProbabilities EOF ;
+    public final EObject entryRuleBranchProbabilities() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBranchProbabilities = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6745:2: (iv_ruleBranchProbabilities= ruleBranchProbabilities EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6746:2: iv_ruleBranchProbabilities= ruleBranchProbabilities EOF
+            {
+             newCompositeNode(grammarAccess.getBranchProbabilitiesRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBranchProbabilities_in_entryRuleBranchProbabilities14351);
+            iv_ruleBranchProbabilities=ruleBranchProbabilities();
+
+            state._fsp--;
+
+             current =iv_ruleBranchProbabilities; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBranchProbabilities14361); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBranchProbabilities"
+
+
+    // $ANTLR start "ruleBranchProbabilities"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6753:1: ruleBranchProbabilities returns [EObject current=null] : (otherlv_0= 'BranchProbabilities' otherlv_1= '{' otherlv_2= 'probabilities' ( ( ruleEString ) ) otherlv_4= '}' ) ;
+    public final EObject ruleBranchProbabilities() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6756:28: ( (otherlv_0= 'BranchProbabilities' otherlv_1= '{' otherlv_2= 'probabilities' ( ( ruleEString ) ) otherlv_4= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6757:1: (otherlv_0= 'BranchProbabilities' otherlv_1= '{' otherlv_2= 'probabilities' ( ( ruleEString ) ) otherlv_4= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6757:1: (otherlv_0= 'BranchProbabilities' otherlv_1= '{' otherlv_2= 'probabilities' ( ( ruleEString ) ) otherlv_4= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6757:3: otherlv_0= 'BranchProbabilities' otherlv_1= '{' otherlv_2= 'probabilities' ( ( ruleEString ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,115,FollowSets000.FOLLOW_115_in_ruleBranchProbabilities14398); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getBranchProbabilitiesAccess().getBranchProbabilitiesKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBranchProbabilities14410); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getBranchProbabilitiesAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,116,FollowSets000.FOLLOW_116_in_ruleBranchProbabilities14422); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6769:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6770:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6770:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6771:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getBranchProbabilitiesRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getBranchProbabilitiesAccess().getProbabilitiesRandomVariableCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleBranchProbabilities14445);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBranchProbabilities14457); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getBranchProbabilitiesAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBranchProbabilities"
+
+
+    // $ANTLR start "entryRuleProbabilityMassFunction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6798:1: entryRuleProbabilityMassFunction returns [EObject current=null] : iv_ruleProbabilityMassFunction= ruleProbabilityMassFunction EOF ;
+    public final EObject entryRuleProbabilityMassFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProbabilityMassFunction = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6799:2: (iv_ruleProbabilityMassFunction= ruleProbabilityMassFunction EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6800:2: iv_ruleProbabilityMassFunction= ruleProbabilityMassFunction EOF
+            {
+             newCompositeNode(grammarAccess.getProbabilityMassFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProbabilityMassFunction_in_entryRuleProbabilityMassFunction14495);
+            iv_ruleProbabilityMassFunction=ruleProbabilityMassFunction();
+
+            state._fsp--;
+
+             current =iv_ruleProbabilityMassFunction; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProbabilityMassFunction14505); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProbabilityMassFunction"
+
+
+    // $ANTLR start "ruleProbabilityMassFunction"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6807:1: ruleProbabilityMassFunction returns [EObject current=null] : ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) ;
+    public final EObject ruleProbabilityMassFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        EObject lv_sample_5_0 = null;
+
+        EObject lv_sample_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6810:28: ( ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6811:1: ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6811:1: ( () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6811:2: () otherlv_1= 'ProbabilityMassFunction' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )? otherlv_9= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6811:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6812:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,117,FollowSets000.FOLLOW_117_in_ruleProbabilityMassFunction14551); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getProbabilityMassFunctionAccess().getProbabilityMassFunctionKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProbabilityMassFunction14563); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6825:1: (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}' )?
+            int alt145=2;
+            int LA145_0 = input.LA(1);
+
+            if ( (LA145_0==118) ) {
+                alt145=1;
+            }
+            switch (alt145) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6825:3: otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )* otherlv_8= '}'
+                    {
+                    otherlv_3=(Token)match(input,118,FollowSets000.FOLLOW_118_in_ruleProbabilityMassFunction14576); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getProbabilityMassFunctionAccess().getSampleKeyword_3_0());
+                        
+                    otherlv_4=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProbabilityMassFunction14588); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getProbabilityMassFunctionAccess().getLeftCurlyBracketKeyword_3_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6833:1: ( (lv_sample_5_0= ruleSample ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6834:1: (lv_sample_5_0= ruleSample )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6834:1: (lv_sample_5_0= ruleSample )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6835:3: lv_sample_5_0= ruleSample
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleSample_in_ruleProbabilityMassFunction14609);
+                    lv_sample_5_0=ruleSample();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"sample",
+                            		lv_sample_5_0, 
+                            		"Sample");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6851:2: (otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) ) )*
+                    loop144:
+                    do {
+                        int alt144=2;
+                        int LA144_0 = input.LA(1);
+
+                        if ( (LA144_0==15) ) {
+                            alt144=1;
+                        }
+
+
+                        switch (alt144) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6851:4: otherlv_6= ',' ( (lv_sample_7_0= ruleSample ) )
+                    	    {
+                    	    otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleProbabilityMassFunction14622); 
+
+                    	        	newLeafNode(otherlv_6, grammarAccess.getProbabilityMassFunctionAccess().getCommaKeyword_3_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6855:1: ( (lv_sample_7_0= ruleSample ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6856:1: (lv_sample_7_0= ruleSample )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6856:1: (lv_sample_7_0= ruleSample )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6857:3: lv_sample_7_0= ruleSample
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getProbabilityMassFunctionAccess().getSampleSampleParserRuleCall_3_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleSample_in_ruleProbabilityMassFunction14643);
+                    	    lv_sample_7_0=ruleSample();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getProbabilityMassFunctionRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"sample",
+                    	            		lv_sample_7_0, 
+                    	            		"Sample");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop144;
+                        }
+                    } while (true);
+
+                    otherlv_8=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleProbabilityMassFunction14657); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_3_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleProbabilityMassFunction14671); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getProbabilityMassFunctionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProbabilityMassFunction"
+
+
+    // $ANTLR start "entryRuleProbabilityDensityFunction_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6889:1: entryRuleProbabilityDensityFunction_Impl returns [EObject current=null] : iv_ruleProbabilityDensityFunction_Impl= ruleProbabilityDensityFunction_Impl EOF ;
+    public final EObject entryRuleProbabilityDensityFunction_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProbabilityDensityFunction_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6890:2: (iv_ruleProbabilityDensityFunction_Impl= ruleProbabilityDensityFunction_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6891:2: iv_ruleProbabilityDensityFunction_Impl= ruleProbabilityDensityFunction_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getProbabilityDensityFunction_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProbabilityDensityFunction_Impl_in_entryRuleProbabilityDensityFunction_Impl14707);
+            iv_ruleProbabilityDensityFunction_Impl=ruleProbabilityDensityFunction_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleProbabilityDensityFunction_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProbabilityDensityFunction_Impl14717); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProbabilityDensityFunction_Impl"
+
+
+    // $ANTLR start "ruleProbabilityDensityFunction_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6898:1: ruleProbabilityDensityFunction_Impl returns [EObject current=null] : ( () otherlv_1= 'ProbabilityDensityFunction' ) ;
+    public final EObject ruleProbabilityDensityFunction_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6901:28: ( ( () otherlv_1= 'ProbabilityDensityFunction' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6902:1: ( () otherlv_1= 'ProbabilityDensityFunction' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6902:1: ( () otherlv_1= 'ProbabilityDensityFunction' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6902:2: () otherlv_1= 'ProbabilityDensityFunction'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6902:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6903:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,119,FollowSets000.FOLLOW_119_in_ruleProbabilityDensityFunction_Impl14763); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getProbabilityDensityFunction_ImplAccess().getProbabilityDensityFunctionKeyword_1());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProbabilityDensityFunction_Impl"
+
+
+    // $ANTLR start "entryRuleBoxedPDF"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6920:1: entryRuleBoxedPDF returns [EObject current=null] : iv_ruleBoxedPDF= ruleBoxedPDF EOF ;
+    public final EObject entryRuleBoxedPDF() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBoxedPDF = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6921:2: (iv_ruleBoxedPDF= ruleBoxedPDF EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6922:2: iv_ruleBoxedPDF= ruleBoxedPDF EOF
+            {
+             newCompositeNode(grammarAccess.getBoxedPDFRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBoxedPDF_in_entryRuleBoxedPDF14799);
+            iv_ruleBoxedPDF=ruleBoxedPDF();
+
+            state._fsp--;
+
+             current =iv_ruleBoxedPDF; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBoxedPDF14809); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBoxedPDF"
+
+
+    // $ANTLR start "ruleBoxedPDF"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6929:1: ruleBoxedPDF returns [EObject current=null] : ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) ;
+    public final EObject ruleBoxedPDF() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        EObject lv_sample_5_0 = null;
+
+        EObject lv_sample_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6932:28: ( ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6933:1: ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6933:1: ( () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6933:2: () otherlv_1= 'BoxedPDF' otherlv_2= '{' (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )? otherlv_9= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6933:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6934:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getBoxedPDFAccess().getBoxedPDFAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,120,FollowSets000.FOLLOW_120_in_ruleBoxedPDF14855); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getBoxedPDFAccess().getBoxedPDFKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBoxedPDF14867); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6947:1: (otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}' )?
+            int alt147=2;
+            int LA147_0 = input.LA(1);
+
+            if ( (LA147_0==118) ) {
+                alt147=1;
+            }
+            switch (alt147) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6947:3: otherlv_3= 'sample' otherlv_4= '{' ( (lv_sample_5_0= ruleContinuousSample ) ) (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )* otherlv_8= '}'
+                    {
+                    otherlv_3=(Token)match(input,118,FollowSets000.FOLLOW_118_in_ruleBoxedPDF14880); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getBoxedPDFAccess().getSampleKeyword_3_0());
+                        
+                    otherlv_4=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleBoxedPDF14892); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getBoxedPDFAccess().getLeftCurlyBracketKeyword_3_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6955:1: ( (lv_sample_5_0= ruleContinuousSample ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6956:1: (lv_sample_5_0= ruleContinuousSample )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6956:1: (lv_sample_5_0= ruleContinuousSample )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6957:3: lv_sample_5_0= ruleContinuousSample
+                    {
+                     
+                    	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_ruleBoxedPDF14913);
+                    lv_sample_5_0=ruleContinuousSample();
+
+                    state._fsp--;
+
+
+                    	        if (current==null) {
+                    	            current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+                    	        }
+                           		add(
+                           			current, 
+                           			"sample",
+                            		lv_sample_5_0, 
+                            		"ContinuousSample");
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6973:2: (otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) ) )*
+                    loop146:
+                    do {
+                        int alt146=2;
+                        int LA146_0 = input.LA(1);
+
+                        if ( (LA146_0==15) ) {
+                            alt146=1;
+                        }
+
+
+                        switch (alt146) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6973:4: otherlv_6= ',' ( (lv_sample_7_0= ruleContinuousSample ) )
+                    	    {
+                    	    otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleBoxedPDF14926); 
+
+                    	        	newLeafNode(otherlv_6, grammarAccess.getBoxedPDFAccess().getCommaKeyword_3_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6977:1: ( (lv_sample_7_0= ruleContinuousSample ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6978:1: (lv_sample_7_0= ruleContinuousSample )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6978:1: (lv_sample_7_0= ruleContinuousSample )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:6979:3: lv_sample_7_0= ruleContinuousSample
+                    	    {
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getBoxedPDFAccess().getSampleContinuousSampleParserRuleCall_3_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_ruleBoxedPDF14947);
+                    	    lv_sample_7_0=ruleContinuousSample();
+
+                    	    state._fsp--;
+
+
+                    	    	        if (current==null) {
+                    	    	            current = createModelElementForParent(grammarAccess.getBoxedPDFRule());
+                    	    	        }
+                    	           		add(
+                    	           			current, 
+                    	           			"sample",
+                    	            		lv_sample_7_0, 
+                    	            		"ContinuousSample");
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop146;
+                        }
+                    } while (true);
+
+                    otherlv_8=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBoxedPDF14961); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_3_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleBoxedPDF14975); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getBoxedPDFAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBoxedPDF"
+
+
+    // $ANTLR start "entryRuleContinuousPDF_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7011:1: entryRuleContinuousPDF_Impl returns [EObject current=null] : iv_ruleContinuousPDF_Impl= ruleContinuousPDF_Impl EOF ;
+    public final EObject entryRuleContinuousPDF_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleContinuousPDF_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7012:2: (iv_ruleContinuousPDF_Impl= ruleContinuousPDF_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7013:2: iv_ruleContinuousPDF_Impl= ruleContinuousPDF_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getContinuousPDF_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleContinuousPDF_Impl_in_entryRuleContinuousPDF_Impl15011);
+            iv_ruleContinuousPDF_Impl=ruleContinuousPDF_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleContinuousPDF_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleContinuousPDF_Impl15021); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleContinuousPDF_Impl"
+
+
+    // $ANTLR start "ruleContinuousPDF_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7020:1: ruleContinuousPDF_Impl returns [EObject current=null] : ( () otherlv_1= 'ContinuousPDF' ) ;
+    public final EObject ruleContinuousPDF_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7023:28: ( ( () otherlv_1= 'ContinuousPDF' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7024:1: ( () otherlv_1= 'ContinuousPDF' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7024:1: ( () otherlv_1= 'ContinuousPDF' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7024:2: () otherlv_1= 'ContinuousPDF'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7024:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7025:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,121,FollowSets000.FOLLOW_121_in_ruleContinuousPDF_Impl15067); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getContinuousPDF_ImplAccess().getContinuousPDFKeyword_1());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleContinuousPDF_Impl"
+
+
+    // $ANTLR start "entryRuleNormalDistribution"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7042:1: entryRuleNormalDistribution returns [EObject current=null] : iv_ruleNormalDistribution= ruleNormalDistribution EOF ;
+    public final EObject entryRuleNormalDistribution() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleNormalDistribution = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7043:2: (iv_ruleNormalDistribution= ruleNormalDistribution EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7044:2: iv_ruleNormalDistribution= ruleNormalDistribution EOF
+            {
+             newCompositeNode(grammarAccess.getNormalDistributionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNormalDistribution_in_entryRuleNormalDistribution15103);
+            iv_ruleNormalDistribution=ruleNormalDistribution();
+
+            state._fsp--;
+
+             current =iv_ruleNormalDistribution; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNormalDistribution15113); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleNormalDistribution"
+
+
+    // $ANTLR start "ruleNormalDistribution"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7051:1: ruleNormalDistribution returns [EObject current=null] : (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) ;
+    public final EObject ruleNormalDistribution() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_mu_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_sigma_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7054:28: ( (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7055:1: (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7055:1: (otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7055:3: otherlv_0= 'NormalDistribution' otherlv_1= '{' otherlv_2= 'mu' ( (lv_mu_3_0= ruleEBigDecimal ) ) otherlv_4= 'sigma' ( (lv_sigma_5_0= ruleEBigDecimal ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,122,FollowSets000.FOLLOW_122_in_ruleNormalDistribution15150); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getNormalDistributionAccess().getNormalDistributionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleNormalDistribution15162); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getNormalDistributionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,123,FollowSets000.FOLLOW_123_in_ruleNormalDistribution15174); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getNormalDistributionAccess().getMuKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7067:1: ( (lv_mu_3_0= ruleEBigDecimal ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7068:1: (lv_mu_3_0= ruleEBigDecimal )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7068:1: (lv_mu_3_0= ruleEBigDecimal )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7069:3: lv_mu_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getMuEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution15195);
+            lv_mu_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"mu",
+                    		lv_mu_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,124,FollowSets000.FOLLOW_124_in_ruleNormalDistribution15207); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getNormalDistributionAccess().getSigmaKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7089:1: ( (lv_sigma_5_0= ruleEBigDecimal ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7090:1: (lv_sigma_5_0= ruleEBigDecimal )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7090:1: (lv_sigma_5_0= ruleEBigDecimal )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7091:3: lv_sigma_5_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getNormalDistributionAccess().getSigmaEBigDecimalParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution15228);
+            lv_sigma_5_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getNormalDistributionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"sigma",
+                    		lv_sigma_5_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleNormalDistribution15240); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getNormalDistributionAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleNormalDistribution"
+
+
+    // $ANTLR start "entryRuleExponentialDistribution"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7119:1: entryRuleExponentialDistribution returns [EObject current=null] : iv_ruleExponentialDistribution= ruleExponentialDistribution EOF ;
+    public final EObject entryRuleExponentialDistribution() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExponentialDistribution = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7120:2: (iv_ruleExponentialDistribution= ruleExponentialDistribution EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7121:2: iv_ruleExponentialDistribution= ruleExponentialDistribution EOF
+            {
+             newCompositeNode(grammarAccess.getExponentialDistributionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExponentialDistribution_in_entryRuleExponentialDistribution15276);
+            iv_ruleExponentialDistribution=ruleExponentialDistribution();
+
+            state._fsp--;
+
+             current =iv_ruleExponentialDistribution; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExponentialDistribution15286); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExponentialDistribution"
+
+
+    // $ANTLR start "ruleExponentialDistribution"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7128:1: ruleExponentialDistribution returns [EObject current=null] : (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' ) ;
+    public final EObject ruleExponentialDistribution() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        AntlrDatatypeRuleToken lv_rate_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7131:28: ( (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7132:1: (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7132:1: (otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7132:3: otherlv_0= 'ExponentialDistribution' otherlv_1= '{' otherlv_2= 'rate' ( (lv_rate_3_0= ruleEBigDecimal ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,125,FollowSets000.FOLLOW_125_in_ruleExponentialDistribution15323); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getExponentialDistributionAccess().getExponentialDistributionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExponentialDistribution15335); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getExponentialDistributionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,126,FollowSets000.FOLLOW_126_in_ruleExponentialDistribution15347); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getExponentialDistributionAccess().getRateKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7144:1: ( (lv_rate_3_0= ruleEBigDecimal ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7145:1: (lv_rate_3_0= ruleEBigDecimal )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7145:1: (lv_rate_3_0= ruleEBigDecimal )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7146:3: lv_rate_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getExponentialDistributionAccess().getRateEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleExponentialDistribution15368);
+            lv_rate_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExponentialDistributionRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"rate",
+                    		lv_rate_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExponentialDistribution15380); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getExponentialDistributionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExponentialDistribution"
+
+
+    // $ANTLR start "entryRuleSample"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7174:1: entryRuleSample returns [EObject current=null] : iv_ruleSample= ruleSample EOF ;
+    public final EObject entryRuleSample() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSample = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7175:2: (iv_ruleSample= ruleSample EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7176:2: iv_ruleSample= ruleSample EOF
+            {
+             newCompositeNode(grammarAccess.getSampleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSample_in_entryRuleSample15416);
+            iv_ruleSample=ruleSample();
+
+            state._fsp--;
+
+             current =iv_ruleSample; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSample15426); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSample"
+
+
+    // $ANTLR start "ruleSample"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7183:1: ruleSample returns [EObject current=null] : (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' ) ;
+    public final EObject ruleSample() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_probability_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7186:28: ( (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7187:1: (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7187:1: (otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7187:3: otherlv_0= 'Sample' otherlv_1= '{' otherlv_2= 'probability' ( (lv_probability_3_0= ruleEBigDecimal ) ) otherlv_4= 'value' ( ( ruleEString ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,127,FollowSets000.FOLLOW_127_in_ruleSample15463); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getSampleAccess().getSampleKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSample15475); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getSampleAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,128,FollowSets000.FOLLOW_128_in_ruleSample15487); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getSampleAccess().getProbabilityKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7199:1: ( (lv_probability_3_0= ruleEBigDecimal ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7200:1: (lv_probability_3_0= ruleEBigDecimal )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7200:1: (lv_probability_3_0= ruleEBigDecimal )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7201:3: lv_probability_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getSampleAccess().getProbabilityEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleSample15508);
+            lv_probability_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getSampleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"probability",
+                    		lv_probability_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,129,FollowSets000.FOLLOW_129_in_ruleSample15520); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getSampleAccess().getValueKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7221:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7222:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7222:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7223:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getSampleRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getSampleAccess().getValueEObjectCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleSample15543);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleSample15555); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getSampleAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSample"
+
+
+    // $ANTLR start "entryRuleEBigDecimal"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7250:1: entryRuleEBigDecimal returns [String current=null] : iv_ruleEBigDecimal= ruleEBigDecimal EOF ;
+    public final String entryRuleEBigDecimal() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleEBigDecimal = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7251:2: (iv_ruleEBigDecimal= ruleEBigDecimal EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7252:2: iv_ruleEBigDecimal= ruleEBigDecimal EOF
+            {
+             newCompositeNode(grammarAccess.getEBigDecimalRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_entryRuleEBigDecimal15594);
+            iv_ruleEBigDecimal=ruleEBigDecimal();
+
+            state._fsp--;
+
+             current =iv_ruleEBigDecimal.getText(); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEBigDecimal15605); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEBigDecimal"
+
+
+    // $ANTLR start "ruleEBigDecimal"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7259:1: ruleEBigDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT ) ;
+    public final AntlrDatatypeRuleToken ruleEBigDecimal() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_INT_0=null;
+        Token kw=null;
+        Token this_INT_2=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7262:28: ( ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7263:1: ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7263:1: ( (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7263:2: (this_INT_0= RULE_INT )? kw= '.' this_INT_2= RULE_INT
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7263:2: (this_INT_0= RULE_INT )?
+            int alt148=2;
+            int LA148_0 = input.LA(1);
+
+            if ( (LA148_0==RULE_INT) ) {
+                alt148=1;
+            }
+            switch (alt148) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7263:7: this_INT_0= RULE_INT
+                    {
+                    this_INT_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleEBigDecimal15646); 
+
+                    		current.merge(this_INT_0);
+                        
+                     
+                        newLeafNode(this_INT_0, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_0()); 
+                        
+
+                    }
+                    break;
+
+            }
+
+            kw=(Token)match(input,130,FollowSets000.FOLLOW_130_in_ruleEBigDecimal15666); 
+
+                    current.merge(kw);
+                    newLeafNode(kw, grammarAccess.getEBigDecimalAccess().getFullStopKeyword_1()); 
+                
+            this_INT_2=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleEBigDecimal15681); 
+
+            		current.merge(this_INT_2);
+                
+             
+                newLeafNode(this_INT_2, grammarAccess.getEBigDecimalAccess().getINTTerminalRuleCall_2()); 
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEBigDecimal"
+
+
+    // $ANTLR start "entryRuleContinuousSample"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7291:1: entryRuleContinuousSample returns [EObject current=null] : iv_ruleContinuousSample= ruleContinuousSample EOF ;
+    public final EObject entryRuleContinuousSample() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleContinuousSample = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7292:2: (iv_ruleContinuousSample= ruleContinuousSample EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7293:2: iv_ruleContinuousSample= ruleContinuousSample EOF
+            {
+             newCompositeNode(grammarAccess.getContinuousSampleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleContinuousSample_in_entryRuleContinuousSample15726);
+            iv_ruleContinuousSample=ruleContinuousSample();
+
+            state._fsp--;
+
+             current =iv_ruleContinuousSample; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleContinuousSample15736); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleContinuousSample"
+
+
+    // $ANTLR start "ruleContinuousSample"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7300:1: ruleContinuousSample returns [EObject current=null] : (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) ;
+    public final EObject ruleContinuousSample() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_value_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_probability_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7303:28: ( (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7304:1: (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7304:1: (otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7304:3: otherlv_0= 'ContinuousSample' otherlv_1= '{' otherlv_2= 'value' ( (lv_value_3_0= ruleEBigDecimal ) ) otherlv_4= 'probability' ( (lv_probability_5_0= ruleEBigDecimal ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,131,FollowSets000.FOLLOW_131_in_ruleContinuousSample15773); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getContinuousSampleAccess().getContinuousSampleKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleContinuousSample15785); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getContinuousSampleAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,129,FollowSets000.FOLLOW_129_in_ruleContinuousSample15797); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getContinuousSampleAccess().getValueKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7316:1: ( (lv_value_3_0= ruleEBigDecimal ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7317:1: (lv_value_3_0= ruleEBigDecimal )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7317:1: (lv_value_3_0= ruleEBigDecimal )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7318:3: lv_value_3_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getValueEBigDecimalParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleContinuousSample15818);
+            lv_value_3_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"value",
+                    		lv_value_3_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,128,FollowSets000.FOLLOW_128_in_ruleContinuousSample15830); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getContinuousSampleAccess().getProbabilityKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7338:1: ( (lv_probability_5_0= ruleEBigDecimal ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7339:1: (lv_probability_5_0= ruleEBigDecimal )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7339:1: (lv_probability_5_0= ruleEBigDecimal )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7340:3: lv_probability_5_0= ruleEBigDecimal
+            {
+             
+            	        newCompositeNode(grammarAccess.getContinuousSampleAccess().getProbabilityEBigDecimalParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEBigDecimal_in_ruleContinuousSample15851);
+            lv_probability_5_0=ruleEBigDecimal();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getContinuousSampleRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"probability",
+                    		lv_probability_5_0, 
+                    		"EBigDecimal");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleContinuousSample15863); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getContinuousSampleAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleContinuousSample"
+
+
+    // $ANTLR start "entryRuleLoopIterationCountDistribution"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7368:1: entryRuleLoopIterationCountDistribution returns [EObject current=null] : iv_ruleLoopIterationCountDistribution= ruleLoopIterationCountDistribution EOF ;
+    public final EObject entryRuleLoopIterationCountDistribution() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleLoopIterationCountDistribution = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7369:2: (iv_ruleLoopIterationCountDistribution= ruleLoopIterationCountDistribution EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7370:2: iv_ruleLoopIterationCountDistribution= ruleLoopIterationCountDistribution EOF
+            {
+             newCompositeNode(grammarAccess.getLoopIterationCountDistributionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleLoopIterationCountDistribution_in_entryRuleLoopIterationCountDistribution15899);
+            iv_ruleLoopIterationCountDistribution=ruleLoopIterationCountDistribution();
+
+            state._fsp--;
+
+             current =iv_ruleLoopIterationCountDistribution; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLoopIterationCountDistribution15909); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLoopIterationCountDistribution"
+
+
+    // $ANTLR start "ruleLoopIterationCountDistribution"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7377:1: ruleLoopIterationCountDistribution returns [EObject current=null] : (otherlv_0= 'LoopIterationCountDistribution' otherlv_1= '{' otherlv_2= 'loopIterationCountDistribution' ( ( ruleEString ) ) otherlv_4= '}' ) ;
+    public final EObject ruleLoopIterationCountDistribution() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7380:28: ( (otherlv_0= 'LoopIterationCountDistribution' otherlv_1= '{' otherlv_2= 'loopIterationCountDistribution' ( ( ruleEString ) ) otherlv_4= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7381:1: (otherlv_0= 'LoopIterationCountDistribution' otherlv_1= '{' otherlv_2= 'loopIterationCountDistribution' ( ( ruleEString ) ) otherlv_4= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7381:1: (otherlv_0= 'LoopIterationCountDistribution' otherlv_1= '{' otherlv_2= 'loopIterationCountDistribution' ( ( ruleEString ) ) otherlv_4= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7381:3: otherlv_0= 'LoopIterationCountDistribution' otherlv_1= '{' otherlv_2= 'loopIterationCountDistribution' ( ( ruleEString ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,132,FollowSets000.FOLLOW_132_in_ruleLoopIterationCountDistribution15946); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleLoopIterationCountDistribution15958); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getLoopIterationCountDistributionAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,101,FollowSets000.FOLLOW_101_in_ruleLoopIterationCountDistribution15970); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7393:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7394:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7394:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7395:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getLoopIterationCountDistributionRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getLoopIterationCountDistributionAccess().getLoopIterationCountDistributionRandomVariableCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleLoopIterationCountDistribution15993);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleLoopIterationCountDistribution16005); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getLoopIterationCountDistributionAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLoopIterationCountDistribution"
+
+
+    // $ANTLR start "entryRuleAssemblyContext"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7420:1: entryRuleAssemblyContext returns [EObject current=null] : iv_ruleAssemblyContext= ruleAssemblyContext EOF ;
+    public final EObject entryRuleAssemblyContext() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleAssemblyContext = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7421:2: (iv_ruleAssemblyContext= ruleAssemblyContext EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7422:2: iv_ruleAssemblyContext= ruleAssemblyContext EOF
+            {
+             newCompositeNode(grammarAccess.getAssemblyContextRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleAssemblyContext_in_entryRuleAssemblyContext16041);
+            iv_ruleAssemblyContext=ruleAssemblyContext();
+
+            state._fsp--;
+
+             current =iv_ruleAssemblyContext; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAssemblyContext16051); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleAssemblyContext"
+
+
+    // $ANTLR start "ruleAssemblyContext"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7429:1: ruleAssemblyContext returns [EObject current=null] : (otherlv_0= 'AssemblyContext' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'encapsulatedComponent' ( ( ruleEString ) ) otherlv_7= '}' ) ;
+    public final EObject ruleAssemblyContext() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7432:28: ( (otherlv_0= 'AssemblyContext' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'encapsulatedComponent' ( ( ruleEString ) ) otherlv_7= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7433:1: (otherlv_0= 'AssemblyContext' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'encapsulatedComponent' ( ( ruleEString ) ) otherlv_7= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7433:1: (otherlv_0= 'AssemblyContext' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'encapsulatedComponent' ( ( ruleEString ) ) otherlv_7= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7433:3: otherlv_0= 'AssemblyContext' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'encapsulatedComponent' ( ( ruleEString ) ) otherlv_7= '}'
+            {
+            otherlv_0=(Token)match(input,133,FollowSets000.FOLLOW_133_in_ruleAssemblyContext16088); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getAssemblyContextAccess().getAssemblyContextKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7437:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7438:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7438:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7439:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getAssemblyContextAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyContext16109);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getAssemblyContextRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleAssemblyContext16121); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getAssemblyContextAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleAssemblyContext16133); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getAssemblyContextAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7463:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7464:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7464:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7465:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getAssemblyContextAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyContext16154);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getAssemblyContextRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,134,FollowSets000.FOLLOW_134_in_ruleAssemblyContext16166); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7485:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7486:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7486:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7487:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getAssemblyContextRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getAssemblyContextAccess().getEncapsulatedComponentRepositoryComponentCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyContext16189);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleAssemblyContext16201); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getAssemblyContextAccess().getRightCurlyBracketKeyword_7());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleAssemblyContext"
+
+
+    // $ANTLR start "entryRuleAssemblyConnector"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7512:1: entryRuleAssemblyConnector returns [EObject current=null] : iv_ruleAssemblyConnector= ruleAssemblyConnector EOF ;
+    public final EObject entryRuleAssemblyConnector() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleAssemblyConnector = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7513:2: (iv_ruleAssemblyConnector= ruleAssemblyConnector EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7514:2: iv_ruleAssemblyConnector= ruleAssemblyConnector EOF
+            {
+             newCompositeNode(grammarAccess.getAssemblyConnectorRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleAssemblyConnector_in_entryRuleAssemblyConnector16237);
+            iv_ruleAssemblyConnector=ruleAssemblyConnector();
+
+            state._fsp--;
+
+             current =iv_ruleAssemblyConnector; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAssemblyConnector16247); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleAssemblyConnector"
+
+
+    // $ANTLR start "ruleAssemblyConnector"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7521:1: ruleAssemblyConnector returns [EObject current=null] : (otherlv_0= 'AssemblyConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'requiredRole' ( ( ruleEString ) ) otherlv_7= 'providedRole' ( ( ruleEString ) ) otherlv_9= 'providingAssemblyContext' ( ( ruleEString ) ) otherlv_11= 'requiringAssemblyContext' ( ( ruleEString ) ) otherlv_13= '}' ) ;
+    public final EObject ruleAssemblyConnector() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7524:28: ( (otherlv_0= 'AssemblyConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'requiredRole' ( ( ruleEString ) ) otherlv_7= 'providedRole' ( ( ruleEString ) ) otherlv_9= 'providingAssemblyContext' ( ( ruleEString ) ) otherlv_11= 'requiringAssemblyContext' ( ( ruleEString ) ) otherlv_13= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7525:1: (otherlv_0= 'AssemblyConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'requiredRole' ( ( ruleEString ) ) otherlv_7= 'providedRole' ( ( ruleEString ) ) otherlv_9= 'providingAssemblyContext' ( ( ruleEString ) ) otherlv_11= 'requiringAssemblyContext' ( ( ruleEString ) ) otherlv_13= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7525:1: (otherlv_0= 'AssemblyConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'requiredRole' ( ( ruleEString ) ) otherlv_7= 'providedRole' ( ( ruleEString ) ) otherlv_9= 'providingAssemblyContext' ( ( ruleEString ) ) otherlv_11= 'requiringAssemblyContext' ( ( ruleEString ) ) otherlv_13= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7525:3: otherlv_0= 'AssemblyConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'requiredRole' ( ( ruleEString ) ) otherlv_7= 'providedRole' ( ( ruleEString ) ) otherlv_9= 'providingAssemblyContext' ( ( ruleEString ) ) otherlv_11= 'requiringAssemblyContext' ( ( ruleEString ) ) otherlv_13= '}'
+            {
+            otherlv_0=(Token)match(input,135,FollowSets000.FOLLOW_135_in_ruleAssemblyConnector16284); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getAssemblyConnectorAccess().getAssemblyConnectorKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7529:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7530:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7530:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7531:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyConnector16305);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getAssemblyConnectorRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleAssemblyConnector16317); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getAssemblyConnectorAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleAssemblyConnector16329); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getAssemblyConnectorAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7555:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7556:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7556:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7557:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyConnector16350);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getAssemblyConnectorRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,103,FollowSets000.FOLLOW_103_in_ruleAssemblyConnector16362); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getAssemblyConnectorAccess().getRequiredRoleKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7577:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7578:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7578:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7579:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getRequiredRoleRequiredRoleCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyConnector16385);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleAssemblyConnector16397); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getAssemblyConnectorAccess().getProvidedRoleKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7596:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7597:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7597:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7598:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getProvidedRoleProvidedRoleCrossReference_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyConnector16420);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,136,FollowSets000.FOLLOW_136_in_ruleAssemblyConnector16432); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextKeyword_9());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7615:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7616:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7616:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7617:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getProvidingAssemblyContextAssemblyContextCrossReference_10_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyConnector16455);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_11=(Token)match(input,137,FollowSets000.FOLLOW_137_in_ruleAssemblyConnector16467); 
+
+                	newLeafNode(otherlv_11, grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextKeyword_11());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7634:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7635:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7635:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7636:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getAssemblyConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getAssemblyConnectorAccess().getRequiringAssemblyContextAssemblyContextCrossReference_12_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleAssemblyConnector16490);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_13=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleAssemblyConnector16502); 
+
+                	newLeafNode(otherlv_13, grammarAccess.getAssemblyConnectorAccess().getRightCurlyBracketKeyword_13());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleAssemblyConnector"
+
+
+    // $ANTLR start "entryRuleProvidedDelegationConnector"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7661:1: entryRuleProvidedDelegationConnector returns [EObject current=null] : iv_ruleProvidedDelegationConnector= ruleProvidedDelegationConnector EOF ;
+    public final EObject entryRuleProvidedDelegationConnector() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleProvidedDelegationConnector = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7662:2: (iv_ruleProvidedDelegationConnector= ruleProvidedDelegationConnector EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7663:2: iv_ruleProvidedDelegationConnector= ruleProvidedDelegationConnector EOF
+            {
+             newCompositeNode(grammarAccess.getProvidedDelegationConnectorRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProvidedDelegationConnector_in_entryRuleProvidedDelegationConnector16538);
+            iv_ruleProvidedDelegationConnector=ruleProvidedDelegationConnector();
+
+            state._fsp--;
+
+             current =iv_ruleProvidedDelegationConnector; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProvidedDelegationConnector16548); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleProvidedDelegationConnector"
+
+
+    // $ANTLR start "ruleProvidedDelegationConnector"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7670:1: ruleProvidedDelegationConnector returns [EObject current=null] : (otherlv_0= 'ProvidedDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerProvidedRole' ( ( ruleEString ) ) otherlv_9= 'outerProvidedRole' ( ( ruleEString ) ) otherlv_11= '}' ) ;
+    public final EObject ruleProvidedDelegationConnector() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7673:28: ( (otherlv_0= 'ProvidedDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerProvidedRole' ( ( ruleEString ) ) otherlv_9= 'outerProvidedRole' ( ( ruleEString ) ) otherlv_11= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7674:1: (otherlv_0= 'ProvidedDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerProvidedRole' ( ( ruleEString ) ) otherlv_9= 'outerProvidedRole' ( ( ruleEString ) ) otherlv_11= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7674:1: (otherlv_0= 'ProvidedDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerProvidedRole' ( ( ruleEString ) ) otherlv_9= 'outerProvidedRole' ( ( ruleEString ) ) otherlv_11= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7674:3: otherlv_0= 'ProvidedDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerProvidedRole' ( ( ruleEString ) ) otherlv_9= 'outerProvidedRole' ( ( ruleEString ) ) otherlv_11= '}'
+            {
+            otherlv_0=(Token)match(input,138,FollowSets000.FOLLOW_138_in_ruleProvidedDelegationConnector16585); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getProvidedDelegationConnectorAccess().getProvidedDelegationConnectorKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7678:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7679:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7679:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7680:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16606);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProvidedDelegationConnectorRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleProvidedDelegationConnector16618); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getProvidedDelegationConnectorAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleProvidedDelegationConnector16630); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getProvidedDelegationConnectorAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7704:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7705:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7705:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7706:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16651);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getProvidedDelegationConnectorRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,139,FollowSets000.FOLLOW_139_in_ruleProvidedDelegationConnector16663); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7726:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7727:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7727:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7728:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getProvidedDelegationConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16686);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,140,FollowSets000.FOLLOW_140_in_ruleProvidedDelegationConnector16698); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7745:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7746:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7746:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7747:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getProvidedDelegationConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getInnerProvidedRoleProvidedRoleCrossReference_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16721);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,141,FollowSets000.FOLLOW_141_in_ruleProvidedDelegationConnector16733); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleKeyword_9());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7764:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7765:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7765:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7766:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getProvidedDelegationConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getProvidedDelegationConnectorAccess().getOuterProvidedRoleProvidedRoleCrossReference_10_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16756);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_11=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleProvidedDelegationConnector16768); 
+
+                	newLeafNode(otherlv_11, grammarAccess.getProvidedDelegationConnectorAccess().getRightCurlyBracketKeyword_11());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleProvidedDelegationConnector"
+
+
+    // $ANTLR start "entryRuleRequiredDelegationConnector"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7791:1: entryRuleRequiredDelegationConnector returns [EObject current=null] : iv_ruleRequiredDelegationConnector= ruleRequiredDelegationConnector EOF ;
+    public final EObject entryRuleRequiredDelegationConnector() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRequiredDelegationConnector = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7792:2: (iv_ruleRequiredDelegationConnector= ruleRequiredDelegationConnector EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7793:2: iv_ruleRequiredDelegationConnector= ruleRequiredDelegationConnector EOF
+            {
+             newCompositeNode(grammarAccess.getRequiredDelegationConnectorRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRequiredDelegationConnector_in_entryRuleRequiredDelegationConnector16804);
+            iv_ruleRequiredDelegationConnector=ruleRequiredDelegationConnector();
+
+            state._fsp--;
+
+             current =iv_ruleRequiredDelegationConnector; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRequiredDelegationConnector16814); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRequiredDelegationConnector"
+
+
+    // $ANTLR start "ruleRequiredDelegationConnector"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7800:1: ruleRequiredDelegationConnector returns [EObject current=null] : (otherlv_0= 'RequiredDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerRequiredRole' ( ( ruleEString ) ) otherlv_9= 'outerRequiredRole' ( ( ruleEString ) ) otherlv_11= '}' ) ;
+    public final EObject ruleRequiredDelegationConnector() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        AntlrDatatypeRuleToken lv_id_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7803:28: ( (otherlv_0= 'RequiredDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerRequiredRole' ( ( ruleEString ) ) otherlv_9= 'outerRequiredRole' ( ( ruleEString ) ) otherlv_11= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7804:1: (otherlv_0= 'RequiredDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerRequiredRole' ( ( ruleEString ) ) otherlv_9= 'outerRequiredRole' ( ( ruleEString ) ) otherlv_11= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7804:1: (otherlv_0= 'RequiredDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerRequiredRole' ( ( ruleEString ) ) otherlv_9= 'outerRequiredRole' ( ( ruleEString ) ) otherlv_11= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7804:3: otherlv_0= 'RequiredDelegationConnector' ( (lv_id_1_0= ruleEString ) ) otherlv_2= '{' otherlv_3= 'name' ( (lv_name_4_0= ruleEString ) ) otherlv_5= 'assemblyContext' ( ( ruleEString ) ) otherlv_7= 'innerRequiredRole' ( ( ruleEString ) ) otherlv_9= 'outerRequiredRole' ( ( ruleEString ) ) otherlv_11= '}'
+            {
+            otherlv_0=(Token)match(input,142,FollowSets000.FOLLOW_142_in_ruleRequiredDelegationConnector16851); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getRequiredDelegationConnectorAccess().getRequiredDelegationConnectorKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7808:1: ( (lv_id_1_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7809:1: (lv_id_1_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7809:1: (lv_id_1_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7810:3: lv_id_1_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getIdEStringParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16872);
+            lv_id_1_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRequiredDelegationConnectorRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"id",
+                    		lv_id_1_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleRequiredDelegationConnector16884); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getRequiredDelegationConnectorAccess().getLeftCurlyBracketKeyword_2());
+                
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleRequiredDelegationConnector16896); 
+
+                	newLeafNode(otherlv_3, grammarAccess.getRequiredDelegationConnectorAccess().getNameKeyword_3());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7834:1: ( (lv_name_4_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7835:1: (lv_name_4_0= ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7835:1: (lv_name_4_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7836:3: lv_name_4_0= ruleEString
+            {
+             
+            	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getNameEStringParserRuleCall_4_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16917);
+            lv_name_4_0=ruleEString();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getRequiredDelegationConnectorRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"name",
+                    		lv_name_4_0, 
+                    		"EString");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,139,FollowSets000.FOLLOW_139_in_ruleRequiredDelegationConnector16929); 
+
+                	newLeafNode(otherlv_5, grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextKeyword_5());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7856:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7857:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7857:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7858:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getRequiredDelegationConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getAssemblyContextAssemblyContextCrossReference_6_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16952);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,143,FollowSets000.FOLLOW_143_in_ruleRequiredDelegationConnector16964); 
+
+                	newLeafNode(otherlv_7, grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleKeyword_7());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7875:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7876:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7876:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7877:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getRequiredDelegationConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getInnerRequiredRoleRequiredRoleCrossReference_8_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16987);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_9=(Token)match(input,144,FollowSets000.FOLLOW_144_in_ruleRequiredDelegationConnector16999); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleKeyword_9());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7894:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7895:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7895:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7896:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getRequiredDelegationConnectorRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getRequiredDelegationConnectorAccess().getOuterRequiredRoleRequiredRoleCrossReference_10_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleRequiredDelegationConnector17022);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_11=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleRequiredDelegationConnector17034); 
+
+                	newLeafNode(otherlv_11, grammarAccess.getRequiredDelegationConnectorAccess().getRightCurlyBracketKeyword_11());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRequiredDelegationConnector"
+
+
+    // $ANTLR start "entryRuleExternalCall_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7921:1: entryRuleExternalCall_Impl returns [EObject current=null] : iv_ruleExternalCall_Impl= ruleExternalCall_Impl EOF ;
+    public final EObject entryRuleExternalCall_Impl() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExternalCall_Impl = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7922:2: (iv_ruleExternalCall_Impl= ruleExternalCall_Impl EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7923:2: iv_ruleExternalCall_Impl= ruleExternalCall_Impl EOF
+            {
+             newCompositeNode(grammarAccess.getExternalCall_ImplRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExternalCall_Impl_in_entryRuleExternalCall_Impl17070);
+            iv_ruleExternalCall_Impl=ruleExternalCall_Impl();
+
+            state._fsp--;
+
+             current =iv_ruleExternalCall_Impl; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExternalCall_Impl17080); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExternalCall_Impl"
+
+
+    // $ANTLR start "ruleExternalCall_Impl"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7930:1: ruleExternalCall_Impl returns [EObject current=null] : (otherlv_0= 'ExternalCall' otherlv_1= '{' otherlv_2= 'signature' ( ( ruleEString ) ) otherlv_4= 'requiredRole' ( ( ruleEString ) ) otherlv_6= '}' ) ;
+    public final EObject ruleExternalCall_Impl() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7933:28: ( (otherlv_0= 'ExternalCall' otherlv_1= '{' otherlv_2= 'signature' ( ( ruleEString ) ) otherlv_4= 'requiredRole' ( ( ruleEString ) ) otherlv_6= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7934:1: (otherlv_0= 'ExternalCall' otherlv_1= '{' otherlv_2= 'signature' ( ( ruleEString ) ) otherlv_4= 'requiredRole' ( ( ruleEString ) ) otherlv_6= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7934:1: (otherlv_0= 'ExternalCall' otherlv_1= '{' otherlv_2= 'signature' ( ( ruleEString ) ) otherlv_4= 'requiredRole' ( ( ruleEString ) ) otherlv_6= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7934:3: otherlv_0= 'ExternalCall' otherlv_1= '{' otherlv_2= 'signature' ( ( ruleEString ) ) otherlv_4= 'requiredRole' ( ( ruleEString ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,145,FollowSets000.FOLLOW_145_in_ruleExternalCall_Impl17117); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getExternalCall_ImplAccess().getExternalCallKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExternalCall_Impl17129); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getExternalCall_ImplAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleExternalCall_Impl17141); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getExternalCall_ImplAccess().getSignatureKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7946:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7947:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7947:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7948:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCall_ImplRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCall_ImplAccess().getSignatureSignatureCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCall_Impl17164);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,103,FollowSets000.FOLLOW_103_in_ruleExternalCall_Impl17176); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getExternalCall_ImplAccess().getRequiredRoleKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7965:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7966:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7966:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7967:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getExternalCall_ImplRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getExternalCall_ImplAccess().getRequiredRoleRequiredRoleCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleExternalCall_Impl17199);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExternalCall_Impl17211); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getExternalCall_ImplAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExternalCall_Impl"
+
+
+    // $ANTLR start "entryRuleExternalCallFrequency"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7992:1: entryRuleExternalCallFrequency returns [EObject current=null] : iv_ruleExternalCallFrequency= ruleExternalCallFrequency EOF ;
+    public final EObject entryRuleExternalCallFrequency() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleExternalCallFrequency = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7993:2: (iv_ruleExternalCallFrequency= ruleExternalCallFrequency EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:7994:2: iv_ruleExternalCallFrequency= ruleExternalCallFrequency EOF
+            {
+             newCompositeNode(grammarAccess.getExternalCallFrequencyRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExternalCallFrequency_in_entryRuleExternalCallFrequency17247);
+            iv_ruleExternalCallFrequency=ruleExternalCallFrequency();
+
+            state._fsp--;
+
+             current =iv_ruleExternalCallFrequency; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExternalCallFrequency17257); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleExternalCallFrequency"
+
+
+    // $ANTLR start "ruleExternalCallFrequency"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8001:1: ruleExternalCallFrequency returns [EObject current=null] : (otherlv_0= 'ExternalCallFrequency' otherlv_1= '{' otherlv_2= 'externalCall' ( (lv_externalCall_3_0= ruleExternalCall ) ) otherlv_4= 'frequency' ( (lv_frequency_5_0= ruleCallFrequency ) ) otherlv_6= '}' ) ;
+    public final EObject ruleExternalCallFrequency() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_externalCall_3_0 = null;
+
+        EObject lv_frequency_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8004:28: ( (otherlv_0= 'ExternalCallFrequency' otherlv_1= '{' otherlv_2= 'externalCall' ( (lv_externalCall_3_0= ruleExternalCall ) ) otherlv_4= 'frequency' ( (lv_frequency_5_0= ruleCallFrequency ) ) otherlv_6= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8005:1: (otherlv_0= 'ExternalCallFrequency' otherlv_1= '{' otherlv_2= 'externalCall' ( (lv_externalCall_3_0= ruleExternalCall ) ) otherlv_4= 'frequency' ( (lv_frequency_5_0= ruleCallFrequency ) ) otherlv_6= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8005:1: (otherlv_0= 'ExternalCallFrequency' otherlv_1= '{' otherlv_2= 'externalCall' ( (lv_externalCall_3_0= ruleExternalCall ) ) otherlv_4= 'frequency' ( (lv_frequency_5_0= ruleCallFrequency ) ) otherlv_6= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8005:3: otherlv_0= 'ExternalCallFrequency' otherlv_1= '{' otherlv_2= 'externalCall' ( (lv_externalCall_3_0= ruleExternalCall ) ) otherlv_4= 'frequency' ( (lv_frequency_5_0= ruleCallFrequency ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,146,FollowSets000.FOLLOW_146_in_ruleExternalCallFrequency17294); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getExternalCallFrequencyAccess().getExternalCallFrequencyKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleExternalCallFrequency17306); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getExternalCallFrequencyAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleExternalCallFrequency17318); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getExternalCallFrequencyAccess().getExternalCallKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8017:1: ( (lv_externalCall_3_0= ruleExternalCall ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8018:1: (lv_externalCall_3_0= ruleExternalCall )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8018:1: (lv_externalCall_3_0= ruleExternalCall )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8019:3: lv_externalCall_3_0= ruleExternalCall
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallFrequencyAccess().getExternalCallExternalCallParserRuleCall_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleExternalCall_in_ruleExternalCallFrequency17339);
+            lv_externalCall_3_0=ruleExternalCall();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallFrequencyRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"externalCall",
+                    		lv_externalCall_3_0, 
+                    		"ExternalCall");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,147,FollowSets000.FOLLOW_147_in_ruleExternalCallFrequency17351); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getExternalCallFrequencyAccess().getFrequencyKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8039:1: ( (lv_frequency_5_0= ruleCallFrequency ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8040:1: (lv_frequency_5_0= ruleCallFrequency )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8040:1: (lv_frequency_5_0= ruleCallFrequency )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8041:3: lv_frequency_5_0= ruleCallFrequency
+            {
+             
+            	        newCompositeNode(grammarAccess.getExternalCallFrequencyAccess().getFrequencyCallFrequencyParserRuleCall_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleCallFrequency_in_ruleExternalCallFrequency17372);
+            lv_frequency_5_0=ruleCallFrequency();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getExternalCallFrequencyRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"frequency",
+                    		lv_frequency_5_0, 
+                    		"CallFrequency");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleExternalCallFrequency17384); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getExternalCallFrequencyAccess().getRightCurlyBracketKeyword_6());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleExternalCallFrequency"
+
+
+    // $ANTLR start "entryRuleCallFrequency"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8069:1: entryRuleCallFrequency returns [EObject current=null] : iv_ruleCallFrequency= ruleCallFrequency EOF ;
+    public final EObject entryRuleCallFrequency() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCallFrequency = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8070:2: (iv_ruleCallFrequency= ruleCallFrequency EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8071:2: iv_ruleCallFrequency= ruleCallFrequency EOF
+            {
+             newCompositeNode(grammarAccess.getCallFrequencyRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCallFrequency_in_entryRuleCallFrequency17420);
+            iv_ruleCallFrequency=ruleCallFrequency();
+
+            state._fsp--;
+
+             current =iv_ruleCallFrequency; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCallFrequency17430); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCallFrequency"
+
+
+    // $ANTLR start "ruleCallFrequency"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8078:1: ruleCallFrequency returns [EObject current=null] : (otherlv_0= 'CallFrequency' otherlv_1= '{' otherlv_2= 'frequency' ( ( ruleEString ) ) otherlv_4= '}' ) ;
+    public final EObject ruleCallFrequency() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8081:28: ( (otherlv_0= 'CallFrequency' otherlv_1= '{' otherlv_2= 'frequency' ( ( ruleEString ) ) otherlv_4= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8082:1: (otherlv_0= 'CallFrequency' otherlv_1= '{' otherlv_2= 'frequency' ( ( ruleEString ) ) otherlv_4= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8082:1: (otherlv_0= 'CallFrequency' otherlv_1= '{' otherlv_2= 'frequency' ( ( ruleEString ) ) otherlv_4= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8082:3: otherlv_0= 'CallFrequency' otherlv_1= '{' otherlv_2= 'frequency' ( ( ruleEString ) ) otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,148,FollowSets000.FOLLOW_148_in_ruleCallFrequency17467); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCallFrequencyAccess().getCallFrequencyKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCallFrequency17479); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getCallFrequencyAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,147,FollowSets000.FOLLOW_147_in_ruleCallFrequency17491); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getCallFrequencyAccess().getFrequencyKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8094:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8095:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8095:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8096:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getCallFrequencyRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getCallFrequencyAccess().getFrequencyRandomVariableCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCallFrequency17514);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCallFrequency17526); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getCallFrequencyAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCallFrequency"
+
+
+    // $ANTLR start "entryRuleDependencyRelationship"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8121:1: entryRuleDependencyRelationship returns [EObject current=null] : iv_ruleDependencyRelationship= ruleDependencyRelationship EOF ;
+    public final EObject entryRuleDependencyRelationship() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDependencyRelationship = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8122:2: (iv_ruleDependencyRelationship= ruleDependencyRelationship EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8123:2: iv_ruleDependencyRelationship= ruleDependencyRelationship EOF
+            {
+             newCompositeNode(grammarAccess.getDependencyRelationshipRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDependencyRelationship_in_entryRuleDependencyRelationship17562);
+            iv_ruleDependencyRelationship=ruleDependencyRelationship();
+
+            state._fsp--;
+
+             current =iv_ruleDependencyRelationship; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDependencyRelationship17572); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDependencyRelationship"
+
+
+    // $ANTLR start "ruleDependencyRelationship"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8130:1: ruleDependencyRelationship returns [EObject current=null] : (otherlv_0= 'DependencyRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'influencedVariable' ( ( ruleEString ) ) otherlv_6= 'influencingParameter' ( ( ruleEString ) ) otherlv_8= '}' ) ;
+    public final EObject ruleDependencyRelationship() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8133:28: ( (otherlv_0= 'DependencyRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'influencedVariable' ( ( ruleEString ) ) otherlv_6= 'influencingParameter' ( ( ruleEString ) ) otherlv_8= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8134:1: (otherlv_0= 'DependencyRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'influencedVariable' ( ( ruleEString ) ) otherlv_6= 'influencingParameter' ( ( ruleEString ) ) otherlv_8= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8134:1: (otherlv_0= 'DependencyRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'influencedVariable' ( ( ruleEString ) ) otherlv_6= 'influencingParameter' ( ( ruleEString ) ) otherlv_8= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8134:3: otherlv_0= 'DependencyRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'influencedVariable' ( ( ruleEString ) ) otherlv_6= 'influencingParameter' ( ( ruleEString ) ) otherlv_8= '}'
+            {
+            otherlv_0=(Token)match(input,149,FollowSets000.FOLLOW_149_in_ruleDependencyRelationship17609); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getDependencyRelationshipAccess().getDependencyRelationshipKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleDependencyRelationship17621); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getDependencyRelationshipAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,150,FollowSets000.FOLLOW_150_in_ruleDependencyRelationship17633); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8146:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8147:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8147:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8148:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getDependencyRelationshipRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getDependencyRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleDependencyRelationship17656);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,151,FollowSets000.FOLLOW_151_in_ruleDependencyRelationship17668); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8165:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8166:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8166:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8167:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getDependencyRelationshipRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getDependencyRelationshipAccess().getInfluencedVariableInfluencedVariableCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleDependencyRelationship17691);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleDependencyRelationship17703); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterKeyword_6());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8184:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8185:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8185:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8186:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getDependencyRelationshipRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getDependencyRelationshipAccess().getInfluencingParameterInfluencingParameterCrossReference_7_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleDependencyRelationship17726);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleDependencyRelationship17738); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getDependencyRelationshipAccess().getRightCurlyBracketKeyword_8());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDependencyRelationship"
+
+
+    // $ANTLR start "entryRuleCorrelationRelationship"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8211:1: entryRuleCorrelationRelationship returns [EObject current=null] : iv_ruleCorrelationRelationship= ruleCorrelationRelationship EOF ;
+    public final EObject entryRuleCorrelationRelationship() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCorrelationRelationship = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8212:2: (iv_ruleCorrelationRelationship= ruleCorrelationRelationship EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8213:2: iv_ruleCorrelationRelationship= ruleCorrelationRelationship EOF
+            {
+             newCompositeNode(grammarAccess.getCorrelationRelationshipRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleCorrelationRelationship_in_entryRuleCorrelationRelationship17774);
+            iv_ruleCorrelationRelationship=ruleCorrelationRelationship();
+
+            state._fsp--;
+
+             current =iv_ruleCorrelationRelationship; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCorrelationRelationship17784); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCorrelationRelationship"
+
+
+    // $ANTLR start "ruleCorrelationRelationship"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8220:1: ruleCorrelationRelationship returns [EObject current=null] : (otherlv_0= 'CorrelationRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'leftInfluencingParameter' ( ( ruleEString ) ) otherlv_6= 'rightInfluencingParameter' ( ( ruleEString ) ) otherlv_8= 'leftComponentInstanceReference' ( (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference ) ) otherlv_10= 'rightComponentInstanceReference' ( (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference ) ) otherlv_12= '}' ) ;
+    public final EObject ruleCorrelationRelationship() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        EObject lv_leftComponentInstanceReference_9_0 = null;
+
+        EObject lv_rightComponentInstanceReference_11_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8223:28: ( (otherlv_0= 'CorrelationRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'leftInfluencingParameter' ( ( ruleEString ) ) otherlv_6= 'rightInfluencingParameter' ( ( ruleEString ) ) otherlv_8= 'leftComponentInstanceReference' ( (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference ) ) otherlv_10= 'rightComponentInstanceReference' ( (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference ) ) otherlv_12= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8224:1: (otherlv_0= 'CorrelationRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'leftInfluencingParameter' ( ( ruleEString ) ) otherlv_6= 'rightInfluencingParameter' ( ( ruleEString ) ) otherlv_8= 'leftComponentInstanceReference' ( (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference ) ) otherlv_10= 'rightComponentInstanceReference' ( (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference ) ) otherlv_12= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8224:1: (otherlv_0= 'CorrelationRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'leftInfluencingParameter' ( ( ruleEString ) ) otherlv_6= 'rightInfluencingParameter' ( ( ruleEString ) ) otherlv_8= 'leftComponentInstanceReference' ( (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference ) ) otherlv_10= 'rightComponentInstanceReference' ( (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference ) ) otherlv_12= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8224:3: otherlv_0= 'CorrelationRelationship' otherlv_1= '{' otherlv_2= 'surroundingEntity' ( ( ruleEString ) ) otherlv_4= 'leftInfluencingParameter' ( ( ruleEString ) ) otherlv_6= 'rightInfluencingParameter' ( ( ruleEString ) ) otherlv_8= 'leftComponentInstanceReference' ( (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference ) ) otherlv_10= 'rightComponentInstanceReference' ( (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference ) ) otherlv_12= '}'
+            {
+            otherlv_0=(Token)match(input,152,FollowSets000.FOLLOW_152_in_ruleCorrelationRelationship17821); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getCorrelationRelationshipAccess().getCorrelationRelationshipKeyword_0());
+                
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleCorrelationRelationship17833); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getCorrelationRelationshipAccess().getLeftCurlyBracketKeyword_1());
+                
+            otherlv_2=(Token)match(input,150,FollowSets000.FOLLOW_150_in_ruleCorrelationRelationship17845); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8236:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8237:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8237:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8238:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getCorrelationRelationshipRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCorrelationRelationship17868);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,153,FollowSets000.FOLLOW_153_in_ruleCorrelationRelationship17880); 
+
+                	newLeafNode(otherlv_4, grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterKeyword_4());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8255:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8256:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8256:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8257:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getCorrelationRelationshipRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getLeftInfluencingParameterInfluencingParameterCrossReference_5_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCorrelationRelationship17903);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,154,FollowSets000.FOLLOW_154_in_ruleCorrelationRelationship17915); 
+
+                	newLeafNode(otherlv_6, grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterKeyword_6());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8274:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8275:1: ( ruleEString )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8275:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8276:3: ruleEString
+            {
+
+            			if (current==null) {
+            	            current = createModelElement(grammarAccess.getCorrelationRelationshipRule());
+            	        }
+                    
+             
+            	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getRightInfluencingParameterInfluencingParameterCrossReference_7_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleCorrelationRelationship17938);
+            ruleEString();
+
+            state._fsp--;
+
+             
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,155,FollowSets000.FOLLOW_155_in_ruleCorrelationRelationship17950); 
+
+                	newLeafNode(otherlv_8, grammarAccess.getCorrelationRelationshipAccess().getLeftComponentInstanceReferenceKeyword_8());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8293:1: ( (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8294:1: (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8294:1: (lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8295:3: lv_leftComponentInstanceReference_9_0= ruleComponentInstanceReference
+            {
+             
+            	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getLeftComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_9_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInstanceReference_in_ruleCorrelationRelationship17971);
+            lv_leftComponentInstanceReference_9_0=ruleComponentInstanceReference();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCorrelationRelationshipRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"leftComponentInstanceReference",
+                    		lv_leftComponentInstanceReference_9_0, 
+                    		"ComponentInstanceReference");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_10=(Token)match(input,156,FollowSets000.FOLLOW_156_in_ruleCorrelationRelationship17983); 
+
+                	newLeafNode(otherlv_10, grammarAccess.getCorrelationRelationshipAccess().getRightComponentInstanceReferenceKeyword_10());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8315:1: ( (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8316:1: (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8316:1: (lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8317:3: lv_rightComponentInstanceReference_11_0= ruleComponentInstanceReference
+            {
+             
+            	        newCompositeNode(grammarAccess.getCorrelationRelationshipAccess().getRightComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_11_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInstanceReference_in_ruleCorrelationRelationship18004);
+            lv_rightComponentInstanceReference_11_0=ruleComponentInstanceReference();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getCorrelationRelationshipRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"rightComponentInstanceReference",
+                    		lv_rightComponentInstanceReference_11_0, 
+                    		"ComponentInstanceReference");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+            otherlv_12=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleCorrelationRelationship18016); 
+
+                	newLeafNode(otherlv_12, grammarAccess.getCorrelationRelationshipAccess().getRightCurlyBracketKeyword_12());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCorrelationRelationship"
+
+
+    // $ANTLR start "entryRuleComponentInstanceReference"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8347:1: entryRuleComponentInstanceReference returns [EObject current=null] : iv_ruleComponentInstanceReference= ruleComponentInstanceReference EOF ;
+    public final EObject entryRuleComponentInstanceReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleComponentInstanceReference = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8348:2: (iv_ruleComponentInstanceReference= ruleComponentInstanceReference EOF )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8349:2: iv_ruleComponentInstanceReference= ruleComponentInstanceReference EOF
+            {
+             newCompositeNode(grammarAccess.getComponentInstanceReferenceRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleComponentInstanceReference_in_entryRuleComponentInstanceReference18054);
+            iv_ruleComponentInstanceReference=ruleComponentInstanceReference();
+
+            state._fsp--;
+
+             current =iv_ruleComponentInstanceReference; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleComponentInstanceReference18064); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleComponentInstanceReference"
+
+
+    // $ANTLR start "ruleComponentInstanceReference"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8356:1: ruleComponentInstanceReference returns [EObject current=null] : ( () otherlv_1= 'ComponentInstanceReference' otherlv_2= '{' (otherlv_3= 'assemblies' otherlv_4= '(' ( ( ruleEString ) ) (otherlv_6= ',' ( ( ruleEString ) ) )* otherlv_8= ')' )? otherlv_9= '}' ) ;
+    public final EObject ruleComponentInstanceReference() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8359:28: ( ( () otherlv_1= 'ComponentInstanceReference' otherlv_2= '{' (otherlv_3= 'assemblies' otherlv_4= '(' ( ( ruleEString ) ) (otherlv_6= ',' ( ( ruleEString ) ) )* otherlv_8= ')' )? otherlv_9= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8360:1: ( () otherlv_1= 'ComponentInstanceReference' otherlv_2= '{' (otherlv_3= 'assemblies' otherlv_4= '(' ( ( ruleEString ) ) (otherlv_6= ',' ( ( ruleEString ) ) )* otherlv_8= ')' )? otherlv_9= '}' )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8360:1: ( () otherlv_1= 'ComponentInstanceReference' otherlv_2= '{' (otherlv_3= 'assemblies' otherlv_4= '(' ( ( ruleEString ) ) (otherlv_6= ',' ( ( ruleEString ) ) )* otherlv_8= ')' )? otherlv_9= '}' )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8360:2: () otherlv_1= 'ComponentInstanceReference' otherlv_2= '{' (otherlv_3= 'assemblies' otherlv_4= '(' ( ( ruleEString ) ) (otherlv_6= ',' ( ( ruleEString ) ) )* otherlv_8= ')' )? otherlv_9= '}'
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8360:2: ()
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8361:5: 
+            {
+
+                    current = forceCreateModelElement(
+                        grammarAccess.getComponentInstanceReferenceAccess().getComponentInstanceReferenceAction_0(),
+                        current);
+                
+
+            }
+
+            otherlv_1=(Token)match(input,157,FollowSets000.FOLLOW_157_in_ruleComponentInstanceReference18110); 
+
+                	newLeafNode(otherlv_1, grammarAccess.getComponentInstanceReferenceAccess().getComponentInstanceReferenceKeyword_1());
+                
+            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleComponentInstanceReference18122); 
+
+                	newLeafNode(otherlv_2, grammarAccess.getComponentInstanceReferenceAccess().getLeftCurlyBracketKeyword_2());
+                
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8374:1: (otherlv_3= 'assemblies' otherlv_4= '(' ( ( ruleEString ) ) (otherlv_6= ',' ( ( ruleEString ) ) )* otherlv_8= ')' )?
+            int alt150=2;
+            int LA150_0 = input.LA(1);
+
+            if ( (LA150_0==158) ) {
+                alt150=1;
+            }
+            switch (alt150) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8374:3: otherlv_3= 'assemblies' otherlv_4= '(' ( ( ruleEString ) ) (otherlv_6= ',' ( ( ruleEString ) ) )* otherlv_8= ')'
+                    {
+                    otherlv_3=(Token)match(input,158,FollowSets000.FOLLOW_158_in_ruleComponentInstanceReference18135); 
+
+                        	newLeafNode(otherlv_3, grammarAccess.getComponentInstanceReferenceAccess().getAssembliesKeyword_3_0());
+                        
+                    otherlv_4=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleComponentInstanceReference18147); 
+
+                        	newLeafNode(otherlv_4, grammarAccess.getComponentInstanceReferenceAccess().getLeftParenthesisKeyword_3_1());
+                        
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8382:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8383:1: ( ruleEString )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8383:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8384:3: ruleEString
+                    {
+
+                    			if (current==null) {
+                    	            current = createModelElement(grammarAccess.getComponentInstanceReferenceRule());
+                    	        }
+                            
+                     
+                    	        newCompositeNode(grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_2_0()); 
+                    	    
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleComponentInstanceReference18170);
+                    ruleEString();
+
+                    state._fsp--;
+
+                     
+                    	        afterParserOrEnumRuleCall();
+                    	    
+
+                    }
+
+
+                    }
+
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8397:2: (otherlv_6= ',' ( ( ruleEString ) ) )*
+                    loop149:
+                    do {
+                        int alt149=2;
+                        int LA149_0 = input.LA(1);
+
+                        if ( (LA149_0==15) ) {
+                            alt149=1;
+                        }
+
+
+                        switch (alt149) {
+                    	case 1 :
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8397:4: otherlv_6= ',' ( ( ruleEString ) )
+                    	    {
+                    	    otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleComponentInstanceReference18183); 
+
+                    	        	newLeafNode(otherlv_6, grammarAccess.getComponentInstanceReferenceAccess().getCommaKeyword_3_3_0());
+                    	        
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8401:1: ( ( ruleEString ) )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8402:1: ( ruleEString )
+                    	    {
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8402:1: ( ruleEString )
+                    	    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8403:3: ruleEString
+                    	    {
+
+                    	    			if (current==null) {
+                    	    	            current = createModelElement(grammarAccess.getComponentInstanceReferenceRule());
+                    	    	        }
+                    	            
+                    	     
+                    	    	        newCompositeNode(grammarAccess.getComponentInstanceReferenceAccess().getAssembliesAssemblyContextCrossReference_3_3_1_0()); 
+                    	    	    
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleComponentInstanceReference18206);
+                    	    ruleEString();
+
+                    	    state._fsp--;
+
+                    	     
+                    	    	        afterParserOrEnumRuleCall();
+                    	    	    
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop149;
+                        }
+                    } while (true);
+
+                    otherlv_8=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleComponentInstanceReference18220); 
+
+                        	newLeafNode(otherlv_8, grammarAccess.getComponentInstanceReferenceAccess().getRightParenthesisKeyword_3_4());
+                        
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleComponentInstanceReference18234); 
+
+                	newLeafNode(otherlv_9, grammarAccess.getComponentInstanceReferenceAccess().getRightCurlyBracketKeyword_4());
+                
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleComponentInstanceReference"
+
+
+    // $ANTLR start "rulePrimitiveTypeEnum"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8432:1: rulePrimitiveTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'INT' ) | (enumLiteral_1= 'STRING' ) | (enumLiteral_2= 'BOOL' ) | (enumLiteral_3= 'DOUBLE' ) | (enumLiteral_4= 'CHAR' ) | (enumLiteral_5= 'BYTE' ) | (enumLiteral_6= 'LONG' ) ) ;
+    public final Enumerator rulePrimitiveTypeEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+        Token enumLiteral_4=null;
+        Token enumLiteral_5=null;
+        Token enumLiteral_6=null;
+
+         enterRule(); 
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8434:28: ( ( (enumLiteral_0= 'INT' ) | (enumLiteral_1= 'STRING' ) | (enumLiteral_2= 'BOOL' ) | (enumLiteral_3= 'DOUBLE' ) | (enumLiteral_4= 'CHAR' ) | (enumLiteral_5= 'BYTE' ) | (enumLiteral_6= 'LONG' ) ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8435:1: ( (enumLiteral_0= 'INT' ) | (enumLiteral_1= 'STRING' ) | (enumLiteral_2= 'BOOL' ) | (enumLiteral_3= 'DOUBLE' ) | (enumLiteral_4= 'CHAR' ) | (enumLiteral_5= 'BYTE' ) | (enumLiteral_6= 'LONG' ) )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8435:1: ( (enumLiteral_0= 'INT' ) | (enumLiteral_1= 'STRING' ) | (enumLiteral_2= 'BOOL' ) | (enumLiteral_3= 'DOUBLE' ) | (enumLiteral_4= 'CHAR' ) | (enumLiteral_5= 'BYTE' ) | (enumLiteral_6= 'LONG' ) )
+            int alt151=7;
+            switch ( input.LA(1) ) {
+            case 159:
+                {
+                alt151=1;
+                }
+                break;
+            case 160:
+                {
+                alt151=2;
+                }
+                break;
+            case 161:
+                {
+                alt151=3;
+                }
+                break;
+            case 162:
+                {
+                alt151=4;
+                }
+                break;
+            case 163:
+                {
+                alt151=5;
+                }
+                break;
+            case 164:
+                {
+                alt151=6;
+                }
+                break;
+            case 165:
+                {
+                alt151=7;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 151, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt151) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8435:2: (enumLiteral_0= 'INT' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8435:2: (enumLiteral_0= 'INT' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8435:4: enumLiteral_0= 'INT'
+                    {
+                    enumLiteral_0=(Token)match(input,159,FollowSets000.FOLLOW_159_in_rulePrimitiveTypeEnum18284); 
+
+                            current = grammarAccess.getPrimitiveTypeEnumAccess().getINTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_0, grammarAccess.getPrimitiveTypeEnumAccess().getINTEnumLiteralDeclaration_0()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8441:6: (enumLiteral_1= 'STRING' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8441:6: (enumLiteral_1= 'STRING' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8441:8: enumLiteral_1= 'STRING'
+                    {
+                    enumLiteral_1=(Token)match(input,160,FollowSets000.FOLLOW_160_in_rulePrimitiveTypeEnum18301); 
+
+                            current = grammarAccess.getPrimitiveTypeEnumAccess().getSTRINGEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_1, grammarAccess.getPrimitiveTypeEnumAccess().getSTRINGEnumLiteralDeclaration_1()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8447:6: (enumLiteral_2= 'BOOL' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8447:6: (enumLiteral_2= 'BOOL' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8447:8: enumLiteral_2= 'BOOL'
+                    {
+                    enumLiteral_2=(Token)match(input,161,FollowSets000.FOLLOW_161_in_rulePrimitiveTypeEnum18318); 
+
+                            current = grammarAccess.getPrimitiveTypeEnumAccess().getBOOLEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_2, grammarAccess.getPrimitiveTypeEnumAccess().getBOOLEnumLiteralDeclaration_2()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8453:6: (enumLiteral_3= 'DOUBLE' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8453:6: (enumLiteral_3= 'DOUBLE' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8453:8: enumLiteral_3= 'DOUBLE'
+                    {
+                    enumLiteral_3=(Token)match(input,162,FollowSets000.FOLLOW_162_in_rulePrimitiveTypeEnum18335); 
+
+                            current = grammarAccess.getPrimitiveTypeEnumAccess().getDOUBLEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_3, grammarAccess.getPrimitiveTypeEnumAccess().getDOUBLEEnumLiteralDeclaration_3()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8459:6: (enumLiteral_4= 'CHAR' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8459:6: (enumLiteral_4= 'CHAR' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8459:8: enumLiteral_4= 'CHAR'
+                    {
+                    enumLiteral_4=(Token)match(input,163,FollowSets000.FOLLOW_163_in_rulePrimitiveTypeEnum18352); 
+
+                            current = grammarAccess.getPrimitiveTypeEnumAccess().getCHAREnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_4, grammarAccess.getPrimitiveTypeEnumAccess().getCHAREnumLiteralDeclaration_4()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8465:6: (enumLiteral_5= 'BYTE' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8465:6: (enumLiteral_5= 'BYTE' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8465:8: enumLiteral_5= 'BYTE'
+                    {
+                    enumLiteral_5=(Token)match(input,164,FollowSets000.FOLLOW_164_in_rulePrimitiveTypeEnum18369); 
+
+                            current = grammarAccess.getPrimitiveTypeEnumAccess().getBYTEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_5, grammarAccess.getPrimitiveTypeEnumAccess().getBYTEEnumLiteralDeclaration_5()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8471:6: (enumLiteral_6= 'LONG' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8471:6: (enumLiteral_6= 'LONG' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8471:8: enumLiteral_6= 'LONG'
+                    {
+                    enumLiteral_6=(Token)match(input,165,FollowSets000.FOLLOW_165_in_rulePrimitiveTypeEnum18386); 
+
+                            current = grammarAccess.getPrimitiveTypeEnumAccess().getLONGEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_6, grammarAccess.getPrimitiveTypeEnumAccess().getLONGEnumLiteralDeclaration_6()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePrimitiveTypeEnum"
+
+
+    // $ANTLR start "ruleParameterModifier"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8481:1: ruleParameterModifier returns [Enumerator current=null] : ( (enumLiteral_0= 'NONE' ) | (enumLiteral_1= 'IN' ) | (enumLiteral_2= 'OUT' ) | (enumLiteral_3= 'INOUT' ) ) ;
+    public final Enumerator ruleParameterModifier() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+
+         enterRule(); 
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8483:28: ( ( (enumLiteral_0= 'NONE' ) | (enumLiteral_1= 'IN' ) | (enumLiteral_2= 'OUT' ) | (enumLiteral_3= 'INOUT' ) ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8484:1: ( (enumLiteral_0= 'NONE' ) | (enumLiteral_1= 'IN' ) | (enumLiteral_2= 'OUT' ) | (enumLiteral_3= 'INOUT' ) )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8484:1: ( (enumLiteral_0= 'NONE' ) | (enumLiteral_1= 'IN' ) | (enumLiteral_2= 'OUT' ) | (enumLiteral_3= 'INOUT' ) )
+            int alt152=4;
+            switch ( input.LA(1) ) {
+            case 166:
+                {
+                alt152=1;
+                }
+                break;
+            case 167:
+                {
+                alt152=2;
+                }
+                break;
+            case 168:
+                {
+                alt152=3;
+                }
+                break;
+            case 169:
+                {
+                alt152=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 152, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt152) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8484:2: (enumLiteral_0= 'NONE' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8484:2: (enumLiteral_0= 'NONE' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8484:4: enumLiteral_0= 'NONE'
+                    {
+                    enumLiteral_0=(Token)match(input,166,FollowSets000.FOLLOW_166_in_ruleParameterModifier18431); 
+
+                            current = grammarAccess.getParameterModifierAccess().getNONEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_0, grammarAccess.getParameterModifierAccess().getNONEEnumLiteralDeclaration_0()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8490:6: (enumLiteral_1= 'IN' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8490:6: (enumLiteral_1= 'IN' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8490:8: enumLiteral_1= 'IN'
+                    {
+                    enumLiteral_1=(Token)match(input,167,FollowSets000.FOLLOW_167_in_ruleParameterModifier18448); 
+
+                            current = grammarAccess.getParameterModifierAccess().getINEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_1, grammarAccess.getParameterModifierAccess().getINEnumLiteralDeclaration_1()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8496:6: (enumLiteral_2= 'OUT' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8496:6: (enumLiteral_2= 'OUT' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8496:8: enumLiteral_2= 'OUT'
+                    {
+                    enumLiteral_2=(Token)match(input,168,FollowSets000.FOLLOW_168_in_ruleParameterModifier18465); 
+
+                            current = grammarAccess.getParameterModifierAccess().getOUTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_2, grammarAccess.getParameterModifierAccess().getOUTEnumLiteralDeclaration_2()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8502:6: (enumLiteral_3= 'INOUT' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8502:6: (enumLiteral_3= 'INOUT' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8502:8: enumLiteral_3= 'INOUT'
+                    {
+                    enumLiteral_3=(Token)match(input,169,FollowSets000.FOLLOW_169_in_ruleParameterModifier18482); 
+
+                            current = grammarAccess.getParameterModifierAccess().getINOUTEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_3, grammarAccess.getParameterModifierAccess().getINOUTEnumLiteralDeclaration_3()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleParameterModifier"
+
+
+    // $ANTLR start "ruleCharacterizationType"
+    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8512:1: ruleCharacterizationType returns [Enumerator current=null] : ( (enumLiteral_0= 'VALUE' ) | (enumLiteral_1= 'NUMBER_OF_ELEMENTS' ) ) ;
+    public final Enumerator ruleCharacterizationType() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+
+         enterRule(); 
+        try {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8514:28: ( ( (enumLiteral_0= 'VALUE' ) | (enumLiteral_1= 'NUMBER_OF_ELEMENTS' ) ) )
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8515:1: ( (enumLiteral_0= 'VALUE' ) | (enumLiteral_1= 'NUMBER_OF_ELEMENTS' ) )
+            {
+            // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8515:1: ( (enumLiteral_0= 'VALUE' ) | (enumLiteral_1= 'NUMBER_OF_ELEMENTS' ) )
+            int alt153=2;
+            int LA153_0 = input.LA(1);
+
+            if ( (LA153_0==170) ) {
+                alt153=1;
+            }
+            else if ( (LA153_0==171) ) {
+                alt153=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 153, 0, input);
+
+                throw nvae;
+            }
+            switch (alt153) {
+                case 1 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8515:2: (enumLiteral_0= 'VALUE' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8515:2: (enumLiteral_0= 'VALUE' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8515:4: enumLiteral_0= 'VALUE'
+                    {
+                    enumLiteral_0=(Token)match(input,170,FollowSets000.FOLLOW_170_in_ruleCharacterizationType18527); 
+
+                            current = grammarAccess.getCharacterizationTypeAccess().getVALUEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_0, grammarAccess.getCharacterizationTypeAccess().getVALUEEnumLiteralDeclaration_0()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8521:6: (enumLiteral_1= 'NUMBER_OF_ELEMENTS' )
+                    {
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8521:6: (enumLiteral_1= 'NUMBER_OF_ELEMENTS' )
+                    // ../edu.kit.ipd.descartes.mm.applicationlevel.repository.text/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/parser/antlr/internal/InternalRepositoryDSL.g:8521:8: enumLiteral_1= 'NUMBER_OF_ELEMENTS'
+                    {
+                    enumLiteral_1=(Token)match(input,171,FollowSets000.FOLLOW_171_in_ruleCharacterizationType18544); 
+
+                            current = grammarAccess.getCharacterizationTypeAccess().getNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                            newLeafNode(enumLiteral_1, grammarAccess.getCharacterizationTypeAccess().getNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1()); 
+                        
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCharacterizationType"
+
+    // Delegated rules
+
+
+ 
+
+    
+    private static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleRepository_in_entryRuleRepository75 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRepository85 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_11_in_ruleRepository122 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRepository143 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepository155 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleRepository167 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRepository188 = new BitSet(new long[]{0x0000000000074000L});
+        public static final BitSet FOLLOW_14_in_ruleRepository201 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepository213 = new BitSet(new long[]{0x0000000940000000L});
+        public static final BitSet FOLLOW_ruleDataType_in_ruleRepository234 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleRepository247 = new BitSet(new long[]{0x0000000940000000L});
+        public static final BitSet FOLLOW_ruleDataType_in_ruleRepository268 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleRepository282 = new BitSet(new long[]{0x0000000000070000L});
+        public static final BitSet FOLLOW_17_in_ruleRepository297 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepository309 = new BitSet(new long[]{0x0000000000080000L});
+        public static final BitSet FOLLOW_ruleInterface_in_ruleRepository330 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleRepository343 = new BitSet(new long[]{0x0000000000080000L});
+        public static final BitSet FOLLOW_ruleInterface_in_ruleRepository364 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleRepository378 = new BitSet(new long[]{0x0000000000050000L});
+        public static final BitSet FOLLOW_18_in_ruleRepository393 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepository405 = new BitSet(new long[]{0x8480000001000000L});
+        public static final BitSet FOLLOW_ruleRepositoryComponent_in_ruleRepository426 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleRepository439 = new BitSet(new long[]{0x8480000001000000L});
+        public static final BitSet FOLLOW_ruleRepositoryComponent_in_ruleRepository460 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleRepository474 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleRepository488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType524 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataType534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionDataType_in_ruleDataType581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompositeDataType_in_ruleDataType608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveDataType_in_ruleDataType635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRepositoryComponent_in_entryRuleRepositoryComponent670 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRepositoryComponent680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRepositoryComponent_Impl_in_ruleRepositoryComponent727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBasicComponent_in_ruleRepositoryComponent754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompositeComponent_in_ruleRepositoryComponent781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSubSystem_in_ruleRepositoryComponent808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_in_entryRuleInfluencingParameter845 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInfluencingParameter855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_Impl_in_ruleInfluencingParameter902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleServiceInputParameter_in_ruleInfluencingParameter929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallReturnParameter_in_ruleInfluencingParameter956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallParameter_in_ruleInfluencingParameter983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCall_in_entryRuleExternalCall1024 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExternalCall1034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCall_Impl_in_ruleExternalCall1081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallAction_in_ruleExternalCall1108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_entryRuleAbstractAction1143 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAbstractAction1153 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_Impl_in_ruleAbstractAction1200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStartAction_in_ruleAbstractAction1227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStopAction_in_ruleAbstractAction1254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAcquireAction_in_ruleAbstractAction1281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleReleaseAction_in_ruleAbstractAction1308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInternalAction_in_ruleAbstractAction1335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleForkAction_in_ruleAbstractAction1362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBranchAction_in_ruleAbstractAction1389 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLoopAction_in_ruleAbstractAction1416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallAction_in_ruleAbstractAction1443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_in_entryRuleComponentInternalBehavior1478 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleComponentInternalBehavior1488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_Impl_in_ruleComponentInternalBehavior1535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFineGrainedBehavior_in_ruleComponentInternalBehavior1562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_entryRuleEString1602 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEString1613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleEString1653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleEString1679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInterface_in_entryRuleInterface1724 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInterface1734 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_ruleInterface1771 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInterface1792 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleInterface1804 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleInterface1816 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInterface1837 = new BitSet(new long[]{0x0000000000910000L});
+        public static final BitSet FOLLOW_20_in_ruleInterface1850 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleInterface1862 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInterface1885 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_15_in_ruleInterface1898 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInterface1921 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_22_in_ruleInterface1935 = new BitSet(new long[]{0x0000000000810000L});
+        public static final BitSet FOLLOW_23_in_ruleInterface1950 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleInterface1962 = new BitSet(new long[]{0x0000008000000000L});
+        public static final BitSet FOLLOW_ruleSignature_in_ruleInterface1983 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleInterface1996 = new BitSet(new long[]{0x0000008000000000L});
+        public static final BitSet FOLLOW_ruleSignature_in_ruleInterface2017 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleInterface2031 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleInterface2045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRepositoryComponent_Impl_in_entryRuleRepositoryComponent_Impl2081 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRepositoryComponent_Impl2091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_ruleRepositoryComponent_Impl2128 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2149 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepositoryComponent_Impl2161 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleRepositoryComponent_Impl2173 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2194 = new BitSet(new long[]{0x000000003E010000L});
+        public static final BitSet FOLLOW_25_in_ruleRepositoryComponent_Impl2207 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleRepositoryComponent_Impl2219 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2242 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_15_in_ruleRepositoryComponent_Impl2255 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRepositoryComponent_Impl2278 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_22_in_ruleRepositoryComponent_Impl2292 = new BitSet(new long[]{0x000000003C010000L});
+        public static final BitSet FOLLOW_26_in_ruleRepositoryComponent_Impl2307 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepositoryComponent_Impl2319 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleRepositoryComponent_Impl2340 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleRepositoryComponent_Impl2353 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleRepositoryComponent_Impl2374 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleRepositoryComponent_Impl2388 = new BitSet(new long[]{0x0000000038010000L});
+        public static final BitSet FOLLOW_27_in_ruleRepositoryComponent_Impl2403 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepositoryComponent_Impl2415 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleRepositoryComponent_Impl2436 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleRepositoryComponent_Impl2449 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleRepositoryComponent_Impl2470 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleRepositoryComponent_Impl2484 = new BitSet(new long[]{0x0000000030010000L});
+        public static final BitSet FOLLOW_28_in_ruleRepositoryComponent_Impl2499 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepositoryComponent_Impl2511 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleRepositoryComponent_Impl2532 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleRepositoryComponent_Impl2545 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleRepositoryComponent_Impl2566 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleRepositoryComponent_Impl2580 = new BitSet(new long[]{0x0000000020010000L});
+        public static final BitSet FOLLOW_29_in_ruleRepositoryComponent_Impl2595 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRepositoryComponent_Impl2607 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleRepositoryComponent_Impl2628 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleRepositoryComponent_Impl2641 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleRepositoryComponent_Impl2662 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleRepositoryComponent_Impl2676 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleRepositoryComponent_Impl2690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCollectionDataType_in_entryRuleCollectionDataType2726 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCollectionDataType2736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_ruleCollectionDataType2773 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCollectionDataType2794 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCollectionDataType2806 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleCollectionDataType2818 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCollectionDataType2839 = new BitSet(new long[]{0x0000000080000000L});
+        public static final BitSet FOLLOW_31_in_ruleCollectionDataType2851 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCollectionDataType2874 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleCollectionDataType2886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompositeDataType_in_entryRuleCompositeDataType2922 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCompositeDataType2932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_ruleCompositeDataType2969 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeDataType2990 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeDataType3002 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleCompositeDataType3014 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeDataType3035 = new BitSet(new long[]{0x0000000600010000L});
+        public static final BitSet FOLLOW_33_in_ruleCompositeDataType3048 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleCompositeDataType3060 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeDataType3083 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeDataType3096 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeDataType3119 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_22_in_ruleCompositeDataType3133 = new BitSet(new long[]{0x0000000400010000L});
+        public static final BitSet FOLLOW_34_in_ruleCompositeDataType3148 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeDataType3160 = new BitSet(new long[]{0x0000002000000000L});
+        public static final BitSet FOLLOW_ruleInnerDeclaration_in_ruleCompositeDataType3181 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeDataType3194 = new BitSet(new long[]{0x0000002000000000L});
+        public static final BitSet FOLLOW_ruleInnerDeclaration_in_ruleCompositeDataType3215 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeDataType3229 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeDataType3243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePrimitiveDataType_in_entryRulePrimitiveDataType3279 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveDataType3289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rulePrimitiveDataType3326 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_rulePrimitiveDataType3338 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_36_in_rulePrimitiveDataType3350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000003F80000000L});
+        public static final BitSet FOLLOW_rulePrimitiveTypeEnum_in_rulePrimitiveDataType3371 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_rulePrimitiveDataType3383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInnerDeclaration_in_entryRuleInnerDeclaration3419 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInnerDeclaration3429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_ruleInnerDeclaration3466 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInnerDeclaration3487 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleInnerDeclaration3499 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleInnerDeclaration3511 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInnerDeclaration3532 = new BitSet(new long[]{0x0000004000000000L});
+        public static final BitSet FOLLOW_38_in_ruleInnerDeclaration3544 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInnerDeclaration3567 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleInnerDeclaration3579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSignature_in_entryRuleSignature3615 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSignature3625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_ruleSignature3662 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSignature3683 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSignature3695 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleSignature3707 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSignature3728 = new BitSet(new long[]{0x0000030000010000L});
+        public static final BitSet FOLLOW_40_in_ruleSignature3741 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSignature3764 = new BitSet(new long[]{0x0000020000010000L});
+        public static final BitSet FOLLOW_41_in_ruleSignature3779 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSignature3791 = new BitSet(new long[]{0x0000040000000000L});
+        public static final BitSet FOLLOW_ruleParameter_in_ruleSignature3812 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSignature3825 = new BitSet(new long[]{0x0000040000000000L});
+        public static final BitSet FOLLOW_ruleParameter_in_ruleSignature3846 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSignature3860 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleSignature3874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParameter_in_entryRuleParameter3910 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleParameter3920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_ruleParameter3957 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleParameter3978 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleParameter3990 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_43_in_ruleParameter4002 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000003C000000000L});
+        public static final BitSet FOLLOW_ruleParameterModifier_in_ruleParameter4023 = new BitSet(new long[]{0x0000004000000000L});
+        public static final BitSet FOLLOW_38_in_ruleParameter4035 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleParameter4058 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleParameter4070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_entryRuleProvidedRole4106 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProvidedRole4116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_ruleProvidedRole4153 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedRole4174 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProvidedRole4186 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleProvidedRole4198 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedRole4219 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_45_in_ruleProvidedRole4231 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedRole4254 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleProvidedRole4266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_entryRuleBlackBoxBehavior4302 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBlackBoxBehavior4312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_ruleBlackBoxBehavior4349 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBlackBoxBehavior4361 = new BitSet(new long[]{0x0001800000000000L});
+        public static final BitSet FOLLOW_47_in_ruleBlackBoxBehavior4374 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBlackBoxBehavior4397 = new BitSet(new long[]{0x0001000000000000L});
+        public static final BitSet FOLLOW_48_in_ruleBlackBoxBehavior4411 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBlackBoxBehavior4434 = new BitSet(new long[]{0x0006000000010000L});
+        public static final BitSet FOLLOW_49_in_ruleBlackBoxBehavior4447 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBlackBoxBehavior4459 = new BitSet(new long[]{0x0000000000000000L,0x0000000000005081L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_in_ruleBlackBoxBehavior4480 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBlackBoxBehavior4493 = new BitSet(new long[]{0x0000000000000000L,0x0000000000005081L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_in_ruleBlackBoxBehavior4514 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBlackBoxBehavior4528 = new BitSet(new long[]{0x0004000000010000L});
+        public static final BitSet FOLLOW_50_in_ruleBlackBoxBehavior4543 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_ruleResponseTimeSpecification_in_ruleBlackBoxBehavior4564 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBlackBoxBehavior4578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_entryRuleRequiredRole4614 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRequiredRole4624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_ruleRequiredRole4661 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredRole4682 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRequiredRole4694 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleRequiredRole4706 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredRole4727 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_45_in_ruleRequiredRole4739 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredRole4762 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleRequiredRole4774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_entryRuleCoarseGrainedBehavior4810 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCoarseGrainedBehavior4820 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_ruleCoarseGrainedBehavior4857 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCoarseGrainedBehavior4869 = new BitSet(new long[]{0x0001800000000000L});
+        public static final BitSet FOLLOW_47_in_ruleCoarseGrainedBehavior4882 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCoarseGrainedBehavior4905 = new BitSet(new long[]{0x0001000000000000L});
+        public static final BitSet FOLLOW_48_in_ruleCoarseGrainedBehavior4919 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCoarseGrainedBehavior4942 = new BitSet(new long[]{0x0062000000010000L});
+        public static final BitSet FOLLOW_49_in_ruleCoarseGrainedBehavior4955 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCoarseGrainedBehavior4967 = new BitSet(new long[]{0x0000000000000000L,0x0000000000005081L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_in_ruleCoarseGrainedBehavior4988 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCoarseGrainedBehavior5001 = new BitSet(new long[]{0x0000000000000000L,0x0000000000005081L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_in_ruleCoarseGrainedBehavior5022 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCoarseGrainedBehavior5036 = new BitSet(new long[]{0x0060000000010000L});
+        public static final BitSet FOLLOW_53_in_ruleCoarseGrainedBehavior5051 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCoarseGrainedBehavior5063 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_ruleExternalCallFrequency_in_ruleCoarseGrainedBehavior5084 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCoarseGrainedBehavior5097 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_ruleExternalCallFrequency_in_ruleCoarseGrainedBehavior5118 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCoarseGrainedBehavior5132 = new BitSet(new long[]{0x0040000000010000L});
+        public static final BitSet FOLLOW_54_in_ruleCoarseGrainedBehavior5147 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCoarseGrainedBehavior5159 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_ruleResourceDemandSpecification_in_ruleCoarseGrainedBehavior5180 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCoarseGrainedBehavior5193 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_ruleResourceDemandSpecification_in_ruleCoarseGrainedBehavior5214 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCoarseGrainedBehavior5228 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleCoarseGrainedBehavior5242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBasicComponent_in_entryRuleBasicComponent5278 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBasicComponent5288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_ruleBasicComponent5325 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBasicComponent5346 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBasicComponent5358 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleBasicComponent5370 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBasicComponent5391 = new BitSet(new long[]{0x030000003E010000L});
+        public static final BitSet FOLLOW_25_in_ruleBasicComponent5404 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleBasicComponent5416 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBasicComponent5439 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_15_in_ruleBasicComponent5452 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBasicComponent5475 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_22_in_ruleBasicComponent5489 = new BitSet(new long[]{0x030000003C010000L});
+        public static final BitSet FOLLOW_26_in_ruleBasicComponent5504 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBasicComponent5516 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleBasicComponent5537 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBasicComponent5550 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleBasicComponent5571 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBasicComponent5585 = new BitSet(new long[]{0x0300000038010000L});
+        public static final BitSet FOLLOW_27_in_ruleBasicComponent5600 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBasicComponent5612 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleBasicComponent5633 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBasicComponent5646 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleBasicComponent5667 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBasicComponent5681 = new BitSet(new long[]{0x0300000030010000L});
+        public static final BitSet FOLLOW_28_in_ruleBasicComponent5696 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBasicComponent5708 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleBasicComponent5729 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBasicComponent5742 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleBasicComponent5763 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBasicComponent5777 = new BitSet(new long[]{0x0300000020010000L});
+        public static final BitSet FOLLOW_29_in_ruleBasicComponent5792 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBasicComponent5804 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleBasicComponent5825 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBasicComponent5838 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleBasicComponent5859 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBasicComponent5873 = new BitSet(new long[]{0x0300000000010000L});
+        public static final BitSet FOLLOW_56_in_ruleBasicComponent5888 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBasicComponent5900 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rulePassiveResourceSpecification_in_ruleBasicComponent5921 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBasicComponent5934 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rulePassiveResourceSpecification_in_ruleBasicComponent5955 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBasicComponent5969 = new BitSet(new long[]{0x0200000000010000L});
+        public static final BitSet FOLLOW_57_in_ruleBasicComponent5984 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBasicComponent5996 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_ruleFineGrainedBehavior_in_ruleBasicComponent6017 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBasicComponent6030 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_ruleFineGrainedBehavior_in_ruleBasicComponent6051 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBasicComponent6065 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBasicComponent6079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCompositeComponent_in_entryRuleCompositeComponent6115 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCompositeComponent6125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_ruleCompositeComponent6162 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeComponent6183 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6195 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleCompositeComponent6207 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeComponent6228 = new BitSet(new long[]{0x780000003E010000L});
+        public static final BitSet FOLLOW_25_in_ruleCompositeComponent6241 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleCompositeComponent6253 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeComponent6276 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6289 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCompositeComponent6312 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_22_in_ruleCompositeComponent6326 = new BitSet(new long[]{0x780000003C010000L});
+        public static final BitSet FOLLOW_26_in_ruleCompositeComponent6341 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6353 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleCompositeComponent6374 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6387 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleCompositeComponent6408 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent6422 = new BitSet(new long[]{0x7800000038010000L});
+        public static final BitSet FOLLOW_27_in_ruleCompositeComponent6437 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6449 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleCompositeComponent6470 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6483 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleCompositeComponent6504 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent6518 = new BitSet(new long[]{0x7800000030010000L});
+        public static final BitSet FOLLOW_28_in_ruleCompositeComponent6533 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6545 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleCompositeComponent6566 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6579 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleCompositeComponent6600 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent6614 = new BitSet(new long[]{0x7800000020010000L});
+        public static final BitSet FOLLOW_29_in_ruleCompositeComponent6629 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6641 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleCompositeComponent6662 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6675 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleCompositeComponent6696 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent6710 = new BitSet(new long[]{0x7800000000010000L});
+        public static final BitSet FOLLOW_59_in_ruleCompositeComponent6725 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6737 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleAssemblyContext_in_ruleCompositeComponent6758 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6771 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleAssemblyContext_in_ruleCompositeComponent6792 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent6806 = new BitSet(new long[]{0x7000000000010000L});
+        public static final BitSet FOLLOW_60_in_ruleCompositeComponent6821 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_ruleAssemblyConnector_in_ruleCompositeComponent6854 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6867 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_ruleAssemblyConnector_in_ruleCompositeComponent6888 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent6902 = new BitSet(new long[]{0x6000000000010000L});
+        public static final BitSet FOLLOW_61_in_ruleCompositeComponent6917 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent6929 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_ruleProvidedDelegationConnector_in_ruleCompositeComponent6950 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent6963 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_ruleProvidedDelegationConnector_in_ruleCompositeComponent6984 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent6998 = new BitSet(new long[]{0x4000000000010000L});
+        public static final BitSet FOLLOW_62_in_ruleCompositeComponent7013 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCompositeComponent7025 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_ruleRequiredDelegationConnector_in_ruleCompositeComponent7046 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleCompositeComponent7059 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_ruleRequiredDelegationConnector_in_ruleCompositeComponent7080 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent7094 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleCompositeComponent7108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSubSystem_in_entryRuleSubSystem7144 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSubSystem7154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_ruleSubSystem7191 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSubSystem7212 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7224 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleSubSystem7236 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSubSystem7257 = new BitSet(new long[]{0x780000003E010000L});
+        public static final BitSet FOLLOW_25_in_ruleSubSystem7270 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleSubSystem7282 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSubSystem7305 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7318 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSubSystem7341 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_22_in_ruleSubSystem7355 = new BitSet(new long[]{0x780000003C010000L});
+        public static final BitSet FOLLOW_26_in_ruleSubSystem7370 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7382 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleSubSystem7403 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7416 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleProvidedRole_in_ruleSubSystem7437 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem7451 = new BitSet(new long[]{0x7800000038010000L});
+        public static final BitSet FOLLOW_27_in_ruleSubSystem7466 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7478 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleSubSystem7499 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7512 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_ruleBlackBoxBehavior_in_ruleSubSystem7533 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem7547 = new BitSet(new long[]{0x7800000030010000L});
+        public static final BitSet FOLLOW_28_in_ruleSubSystem7562 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7574 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleSubSystem7595 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7608 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleRequiredRole_in_ruleSubSystem7629 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem7643 = new BitSet(new long[]{0x7800000020010000L});
+        public static final BitSet FOLLOW_29_in_ruleSubSystem7658 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7670 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleSubSystem7691 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7704 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleCoarseGrainedBehavior_in_ruleSubSystem7725 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem7739 = new BitSet(new long[]{0x7800000000010000L});
+        public static final BitSet FOLLOW_59_in_ruleSubSystem7754 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7766 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleAssemblyContext_in_ruleSubSystem7787 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7800 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleAssemblyContext_in_ruleSubSystem7821 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem7835 = new BitSet(new long[]{0x7000000000010000L});
+        public static final BitSet FOLLOW_60_in_ruleSubSystem7850 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7862 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_ruleAssemblyConnector_in_ruleSubSystem7883 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7896 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_ruleAssemblyConnector_in_ruleSubSystem7917 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem7931 = new BitSet(new long[]{0x6000000000010000L});
+        public static final BitSet FOLLOW_61_in_ruleSubSystem7946 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem7958 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_ruleProvidedDelegationConnector_in_ruleSubSystem7979 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem7992 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_ruleProvidedDelegationConnector_in_ruleSubSystem8013 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem8027 = new BitSet(new long[]{0x4000000000010000L});
+        public static final BitSet FOLLOW_62_in_ruleSubSystem8042 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSubSystem8054 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_ruleRequiredDelegationConnector_in_ruleSubSystem8075 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleSubSystem8088 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_ruleRequiredDelegationConnector_in_ruleSubSystem8109 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem8123 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleSubSystem8137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_Impl_in_entryRuleInfluencingParameter_Impl8173 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInfluencingParameter_Impl8183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_ruleInfluencingParameter_Impl8220 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInfluencingParameter_Impl8241 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleInfluencingParameter_Impl8253 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_ruleInfluencingParameter_Impl8265 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInfluencingParameter_Impl8286 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_66_in_ruleInfluencingParameter_Impl8298 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInfluencingParameter_Impl8321 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_67_in_ruleInfluencingParameter_Impl8334 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleInfluencingParameter_Impl8346 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleInfluencingParameter_Impl8367 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleInfluencingParameter_Impl8380 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleInfluencingParameter_Impl8401 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleInfluencingParameter_Impl8415 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleInfluencingParameter_Impl8429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleResponseTimeSpecification_in_entryRuleResponseTimeSpecification8465 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleResponseTimeSpecification8475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_ruleResponseTimeSpecification8521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScope_in_entryRuleScope8557 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleScope8567 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_ruleScope8604 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleScope8616 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_70_in_ruleScope8628 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleScope8651 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleScope8663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleServiceInputParameter_in_entryRuleServiceInputParameter8699 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleServiceInputParameter8709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_ruleServiceInputParameter8746 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleServiceInputParameter8767 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleServiceInputParameter8779 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_ruleServiceInputParameter8791 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleServiceInputParameter8812 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_72_in_ruleServiceInputParameter8824 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000C0000000000L});
+        public static final BitSet FOLLOW_ruleCharacterizationType_in_ruleServiceInputParameter8845 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_66_in_ruleServiceInputParameter8857 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleServiceInputParameter8880 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_73_in_ruleServiceInputParameter8892 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleServiceInputParameter8915 = new BitSet(new long[]{0x0000010000000000L,0x0000000000000C00L});
+        public static final BitSet FOLLOW_74_in_ruleServiceInputParameter8928 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleServiceInputParameter8951 = new BitSet(new long[]{0x0000010000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_40_in_ruleServiceInputParameter8966 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleServiceInputParameter8989 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_75_in_ruleServiceInputParameter9003 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleServiceInputParameter9026 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_67_in_ruleServiceInputParameter9039 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleServiceInputParameter9051 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleServiceInputParameter9072 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleServiceInputParameter9085 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleServiceInputParameter9106 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleServiceInputParameter9120 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleServiceInputParameter9134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallReturnParameter_in_entryRuleExternalCallReturnParameter9170 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExternalCallReturnParameter9180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_ruleExternalCallReturnParameter9217 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9238 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExternalCallReturnParameter9250 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_ruleExternalCallReturnParameter9262 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9283 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_72_in_ruleExternalCallReturnParameter9295 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000C0000000000L});
+        public static final BitSet FOLLOW_ruleCharacterizationType_in_ruleExternalCallReturnParameter9316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_66_in_ruleExternalCallReturnParameter9328 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9351 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_73_in_ruleExternalCallReturnParameter9363 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9386 = new BitSet(new long[]{0x0000010000000000L,0x0000000000002400L});
+        public static final BitSet FOLLOW_74_in_ruleExternalCallReturnParameter9399 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9422 = new BitSet(new long[]{0x0000010000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_40_in_ruleExternalCallReturnParameter9437 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9460 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_77_in_ruleExternalCallReturnParameter9474 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallReturnParameter9497 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_67_in_ruleExternalCallReturnParameter9510 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExternalCallReturnParameter9522 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleExternalCallReturnParameter9543 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleExternalCallReturnParameter9556 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleExternalCallReturnParameter9577 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleExternalCallReturnParameter9591 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleExternalCallReturnParameter9605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallParameter_in_entryRuleExternalCallParameter9641 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExternalCallParameter9651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_ruleExternalCallParameter9688 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallParameter9709 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExternalCallParameter9721 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_ruleExternalCallParameter9733 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallParameter9754 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_72_in_ruleExternalCallParameter9766 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000C0000000000L});
+        public static final BitSet FOLLOW_ruleCharacterizationType_in_ruleExternalCallParameter9787 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_66_in_ruleExternalCallParameter9799 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallParameter9822 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_73_in_ruleExternalCallParameter9834 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallParameter9857 = new BitSet(new long[]{0x0000010000000000L,0x0000000000008400L});
+        public static final BitSet FOLLOW_74_in_ruleExternalCallParameter9870 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallParameter9893 = new BitSet(new long[]{0x0000010000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_40_in_ruleExternalCallParameter9908 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallParameter9931 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_79_in_ruleExternalCallParameter9945 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallParameter9968 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_67_in_ruleExternalCallParameter9981 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExternalCallParameter9993 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleExternalCallParameter10014 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleExternalCallParameter10027 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleScope_in_ruleExternalCallParameter10048 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleExternalCallParameter10062 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleExternalCallParameter10076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFineGrainedBehavior_in_entryRuleFineGrainedBehavior10112 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFineGrainedBehavior10122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_ruleFineGrainedBehavior10159 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleFineGrainedBehavior10171 = new BitSet(new long[]{0x0000800000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_47_in_ruleFineGrainedBehavior10184 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleFineGrainedBehavior10207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_81_in_ruleFineGrainedBehavior10221 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleFineGrainedBehavior10244 = new BitSet(new long[]{0x0002000000000000L,0x0000000000040004L});
+        public static final BitSet FOLLOW_49_in_ruleFineGrainedBehavior10257 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleFineGrainedBehavior10269 = new BitSet(new long[]{0x0000000000000000L,0x0000000000005081L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_in_ruleFineGrainedBehavior10290 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleFineGrainedBehavior10303 = new BitSet(new long[]{0x0000000000000000L,0x0000000000005081L});
+        public static final BitSet FOLLOW_ruleInfluencingParameter_in_ruleFineGrainedBehavior10324 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleFineGrainedBehavior10338 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040004L});
+        public static final BitSet FOLLOW_82_in_ruleFineGrainedBehavior10353 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleFineGrainedBehavior10365 = new BitSet(new long[]{0x0000000000000000L,0x000000493B880000L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_ruleFineGrainedBehavior10386 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleFineGrainedBehavior10399 = new BitSet(new long[]{0x0000000000000000L,0x000000493B880000L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_ruleFineGrainedBehavior10420 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleFineGrainedBehavior10434 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_66_in_ruleFineGrainedBehavior10448 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_in_ruleFineGrainedBehavior10469 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleFineGrainedBehavior10481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_Impl_in_entryRuleAbstractAction_Impl10517 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAbstractAction_Impl10527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_ruleAbstractAction_Impl10573 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleAbstractAction_Impl10585 = new BitSet(new long[]{0x0000000000010000L,0x0000000000300000L});
+        public static final BitSet FOLLOW_84_in_ruleAbstractAction_Impl10598 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAbstractAction_Impl10621 = new BitSet(new long[]{0x0000000000010000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_85_in_ruleAbstractAction_Impl10636 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAbstractAction_Impl10659 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleAbstractAction_Impl10673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_Impl_in_entryRuleComponentInternalBehavior_Impl10709 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleComponentInternalBehavior_Impl10719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_ruleComponentInternalBehavior_Impl10765 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleComponentInternalBehavior_Impl10777 = new BitSet(new long[]{0x0000000000010000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_82_in_ruleComponentInternalBehavior_Impl10790 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleComponentInternalBehavior_Impl10802 = new BitSet(new long[]{0x0000000000000000L,0x000000493B880000L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_ruleComponentInternalBehavior_Impl10823 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleComponentInternalBehavior_Impl10836 = new BitSet(new long[]{0x0000000000000000L,0x000000493B880000L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_ruleComponentInternalBehavior_Impl10857 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleComponentInternalBehavior_Impl10871 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleComponentInternalBehavior_Impl10885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStartAction_in_entryRuleStartAction10921 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStartAction10931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_ruleStartAction10977 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleStartAction10989 = new BitSet(new long[]{0x0000000000010000L,0x0000000000300000L});
+        public static final BitSet FOLLOW_84_in_ruleStartAction11002 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleStartAction11025 = new BitSet(new long[]{0x0000000000010000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_85_in_ruleStartAction11040 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleStartAction11063 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleStartAction11077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStopAction_in_entryRuleStopAction11113 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStopAction11123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_ruleStopAction11169 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleStopAction11181 = new BitSet(new long[]{0x0000000000010000L,0x0000000000300000L});
+        public static final BitSet FOLLOW_84_in_ruleStopAction11194 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleStopAction11217 = new BitSet(new long[]{0x0000000000010000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_85_in_ruleStopAction11232 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleStopAction11255 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleStopAction11269 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAcquireAction_in_entryRuleAcquireAction11305 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAcquireAction11315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_ruleAcquireAction11352 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleAcquireAction11364 = new BitSet(new long[]{0x0000000000000000L,0x0000000004300000L});
+        public static final BitSet FOLLOW_84_in_ruleAcquireAction11377 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAcquireAction11400 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+        public static final BitSet FOLLOW_85_in_ruleAcquireAction11415 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAcquireAction11438 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_90_in_ruleAcquireAction11452 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAcquireAction11475 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleAcquireAction11487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleReleaseAction_in_entryRuleReleaseAction11523 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleReleaseAction11533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_ruleReleaseAction11570 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleReleaseAction11582 = new BitSet(new long[]{0x0000000000000000L,0x0000000004300000L});
+        public static final BitSet FOLLOW_84_in_ruleReleaseAction11595 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleReleaseAction11618 = new BitSet(new long[]{0x0000000000000000L,0x0000000004200000L});
+        public static final BitSet FOLLOW_85_in_ruleReleaseAction11633 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleReleaseAction11656 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_90_in_ruleReleaseAction11670 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleReleaseAction11693 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleReleaseAction11705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInternalAction_in_entryRuleInternalAction11741 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInternalAction11751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_ruleInternalAction11797 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleInternalAction11809 = new BitSet(new long[]{0x0040000000010000L,0x0000000000300000L});
+        public static final BitSet FOLLOW_84_in_ruleInternalAction11822 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInternalAction11845 = new BitSet(new long[]{0x0040000000010000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_85_in_ruleInternalAction11860 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleInternalAction11883 = new BitSet(new long[]{0x0040000000010000L});
+        public static final BitSet FOLLOW_54_in_ruleInternalAction11898 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleInternalAction11910 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_ruleResourceDemandSpecification_in_ruleInternalAction11931 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleInternalAction11944 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_ruleResourceDemandSpecification_in_ruleInternalAction11965 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleInternalAction11979 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleInternalAction11993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleForkAction_in_entryRuleForkAction12029 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleForkAction12039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_ruleForkAction12082 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_94_in_ruleForkAction12107 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleForkAction12119 = new BitSet(new long[]{0x0000000000010000L,0x0000000080300000L});
+        public static final BitSet FOLLOW_84_in_ruleForkAction12132 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleForkAction12155 = new BitSet(new long[]{0x0000000000010000L,0x0000000080200000L});
+        public static final BitSet FOLLOW_85_in_ruleForkAction12170 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleForkAction12193 = new BitSet(new long[]{0x0000000000010000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_95_in_ruleForkAction12208 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleForkAction12220 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_in_ruleForkAction12241 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleForkAction12254 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_in_ruleForkAction12275 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleForkAction12289 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleForkAction12303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBranchAction_in_entryRuleBranchAction12339 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBranchAction12349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_ruleBranchAction12386 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBranchAction12398 = new BitSet(new long[]{0x0000000000000000L,0x0000000600300000L});
+        public static final BitSet FOLLOW_84_in_ruleBranchAction12411 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBranchAction12434 = new BitSet(new long[]{0x0000000000000000L,0x0000000600200000L});
+        public static final BitSet FOLLOW_85_in_ruleBranchAction12449 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBranchAction12472 = new BitSet(new long[]{0x0000000000000000L,0x0000000600000000L});
+        public static final BitSet FOLLOW_97_in_ruleBranchAction12487 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBranchAction12499 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_ruleBranchTransition_in_ruleBranchAction12520 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBranchAction12533 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_ruleBranchTransition_in_ruleBranchAction12554 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBranchAction12568 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+        public static final BitSet FOLLOW_98_in_ruleBranchAction12582 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_ruleBranchProbabilities_in_ruleBranchAction12603 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBranchAction12615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLoopAction_in_entryRuleLoopAction12651 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLoopAction12661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_ruleLoopAction12698 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleLoopAction12710 = new BitSet(new long[]{0x0000000000000000L,0x0000001000300000L});
+        public static final BitSet FOLLOW_84_in_ruleLoopAction12723 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleLoopAction12746 = new BitSet(new long[]{0x0000000000000000L,0x0000001000200000L});
+        public static final BitSet FOLLOW_85_in_ruleLoopAction12761 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleLoopAction12784 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_100_in_ruleLoopAction12798 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_in_ruleLoopAction12819 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_101_in_ruleLoopAction12831 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_ruleLoopIterationCountDistribution_in_ruleLoopAction12852 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleLoopAction12864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallAction_in_entryRuleExternalCallAction12900 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExternalCallAction12910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_ruleExternalCallAction12947 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExternalCallAction12959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000300200L});
+        public static final BitSet FOLLOW_84_in_ruleExternalCallAction12972 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallAction12995 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200200L});
+        public static final BitSet FOLLOW_85_in_ruleExternalCallAction13010 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallAction13033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_73_in_ruleExternalCallAction13047 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallAction13070 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_103_in_ruleExternalCallAction13082 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCallAction13105 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleExternalCallAction13117 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePassiveResourceSpecification_in_entryRulePassiveResourceSpecification13153 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePassiveResourceSpecification13163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_rulePassiveResourceSpecification13200 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_rulePassiveResourceSpecification13221 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_rulePassiveResourceSpecification13233 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_rulePassiveResourceSpecification13245 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_rulePassiveResourceSpecification13266 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_rulePassiveResourceSpecification13278 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_rulePassiveResourceSpecification13301 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+        public static final BitSet FOLLOW_106_in_rulePassiveResourceSpecification13313 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+        public static final BitSet FOLLOW_rulePassiveResourceCapacity_in_rulePassiveResourceSpecification13334 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_rulePassiveResourceSpecification13346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePassiveResourceCapacity_in_entryRulePassiveResourceCapacity13382 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePassiveResourceCapacity13392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_rulePassiveResourceCapacity13429 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_rulePassiveResourceCapacity13450 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_rulePassiveResourceCapacity13462 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_rulePassiveResourceCapacity13474 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_rulePassiveResourceCapacity13495 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+        public static final BitSet FOLLOW_106_in_rulePassiveResourceCapacity13507 = new BitSet(new long[]{0x0000000000000040L,0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleEBigInteger_in_rulePassiveResourceCapacity13528 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_rulePassiveResourceCapacity13540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigInteger_in_entryRuleEBigInteger13579 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEBigInteger13590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_ruleEBigInteger13629 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleEBigInteger13646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleResourceDemandSpecification_in_entryRuleResourceDemandSpecification13691 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleResourceDemandSpecification13701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_ruleResourceDemandSpecification13738 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleResourceDemandSpecification13750 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_110_in_ruleResourceDemandSpecification13762 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleResourceDemandSpecification13785 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleResourceDemandSpecification13797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProcessingResourceType_Impl_in_entryRuleProcessingResourceType_Impl13833 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProcessingResourceType_Impl13843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_111_in_ruleProcessingResourceType_Impl13880 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProcessingResourceType_Impl13901 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProcessingResourceType_Impl13913 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleProcessingResourceType_Impl13925 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProcessingResourceType_Impl13946 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleProcessingResourceType_Impl13958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCommunicationLinkResourceType_in_entryRuleCommunicationLinkResourceType13994 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCommunicationLinkResourceType14004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_ruleCommunicationLinkResourceType14041 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCommunicationLinkResourceType14062 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCommunicationLinkResourceType14074 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleCommunicationLinkResourceType14086 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCommunicationLinkResourceType14107 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleCommunicationLinkResourceType14119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBranchTransition_in_entryRuleBranchTransition14157 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBranchTransition14167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_ruleBranchTransition14204 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBranchTransition14225 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBranchTransition14237 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleBranchTransition14249 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBranchTransition14270 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_114_in_ruleBranchTransition14282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
+        public static final BitSet FOLLOW_ruleComponentInternalBehavior_in_ruleBranchTransition14303 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBranchTransition14315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBranchProbabilities_in_entryRuleBranchProbabilities14351 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBranchProbabilities14361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_ruleBranchProbabilities14398 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBranchProbabilities14410 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+        public static final BitSet FOLLOW_116_in_ruleBranchProbabilities14422 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleBranchProbabilities14445 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBranchProbabilities14457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityMassFunction_in_entryRuleProbabilityMassFunction14495 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProbabilityMassFunction14505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_ruleProbabilityMassFunction14551 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProbabilityMassFunction14563 = new BitSet(new long[]{0x0000000000010000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_118_in_ruleProbabilityMassFunction14576 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProbabilityMassFunction14588 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
+        public static final BitSet FOLLOW_ruleSample_in_ruleProbabilityMassFunction14609 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleProbabilityMassFunction14622 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
+        public static final BitSet FOLLOW_ruleSample_in_ruleProbabilityMassFunction14643 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleProbabilityMassFunction14657 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleProbabilityMassFunction14671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProbabilityDensityFunction_Impl_in_entryRuleProbabilityDensityFunction_Impl14707 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProbabilityDensityFunction_Impl14717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_ruleProbabilityDensityFunction_Impl14763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBoxedPDF_in_entryRuleBoxedPDF14799 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBoxedPDF14809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_ruleBoxedPDF14855 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBoxedPDF14867 = new BitSet(new long[]{0x0000000000010000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_118_in_ruleBoxedPDF14880 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleBoxedPDF14892 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_ruleBoxedPDF14913 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_15_in_ruleBoxedPDF14926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_ruleBoxedPDF14947 = new BitSet(new long[]{0x0000000000018000L});
+        public static final BitSet FOLLOW_16_in_ruleBoxedPDF14961 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBoxedPDF14975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousPDF_Impl_in_entryRuleContinuousPDF_Impl15011 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleContinuousPDF_Impl15021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_ruleContinuousPDF_Impl15067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNormalDistribution_in_entryRuleNormalDistribution15103 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNormalDistribution15113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_ruleNormalDistribution15150 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleNormalDistribution15162 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_123_in_ruleNormalDistribution15174 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution15195 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_124_in_ruleNormalDistribution15207 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleNormalDistribution15228 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleNormalDistribution15240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExponentialDistribution_in_entryRuleExponentialDistribution15276 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExponentialDistribution15286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_ruleExponentialDistribution15323 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExponentialDistribution15335 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+        public static final BitSet FOLLOW_126_in_ruleExponentialDistribution15347 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleExponentialDistribution15368 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleExponentialDistribution15380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSample_in_entryRuleSample15416 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSample15426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_127_in_ruleSample15463 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleSample15475 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_ruleSample15487 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleSample15508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_129_in_ruleSample15520 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleSample15543 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleSample15555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_entryRuleEBigDecimal15594 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEBigDecimal15605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleEBigDecimal15646 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_130_in_ruleEBigDecimal15666 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleEBigDecimal15681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousSample_in_entryRuleContinuousSample15726 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleContinuousSample15736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_131_in_ruleContinuousSample15773 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleContinuousSample15785 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_129_in_ruleContinuousSample15797 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleContinuousSample15818 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_ruleContinuousSample15830 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_ruleEBigDecimal_in_ruleContinuousSample15851 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleContinuousSample15863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLoopIterationCountDistribution_in_entryRuleLoopIterationCountDistribution15899 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLoopIterationCountDistribution15909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_132_in_ruleLoopIterationCountDistribution15946 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleLoopIterationCountDistribution15958 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_101_in_ruleLoopIterationCountDistribution15970 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleLoopIterationCountDistribution15993 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleLoopIterationCountDistribution16005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAssemblyContext_in_entryRuleAssemblyContext16041 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAssemblyContext16051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_133_in_ruleAssemblyContext16088 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyContext16109 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleAssemblyContext16121 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleAssemblyContext16133 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyContext16154 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_134_in_ruleAssemblyContext16166 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyContext16189 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleAssemblyContext16201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAssemblyConnector_in_entryRuleAssemblyConnector16237 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAssemblyConnector16247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_ruleAssemblyConnector16284 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyConnector16305 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleAssemblyConnector16317 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleAssemblyConnector16329 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyConnector16350 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_103_in_ruleAssemblyConnector16362 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyConnector16385 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_75_in_ruleAssemblyConnector16397 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyConnector16420 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_136_in_ruleAssemblyConnector16432 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyConnector16455 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_137_in_ruleAssemblyConnector16467 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleAssemblyConnector16490 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleAssemblyConnector16502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProvidedDelegationConnector_in_entryRuleProvidedDelegationConnector16538 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProvidedDelegationConnector16548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_138_in_ruleProvidedDelegationConnector16585 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16606 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleProvidedDelegationConnector16618 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleProvidedDelegationConnector16630 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16651 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_139_in_ruleProvidedDelegationConnector16663 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16686 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_140_in_ruleProvidedDelegationConnector16698 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16721 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_141_in_ruleProvidedDelegationConnector16733 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleProvidedDelegationConnector16756 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleProvidedDelegationConnector16768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRequiredDelegationConnector_in_entryRuleRequiredDelegationConnector16804 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRequiredDelegationConnector16814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_142_in_ruleRequiredDelegationConnector16851 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16872 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleRequiredDelegationConnector16884 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_13_in_ruleRequiredDelegationConnector16896 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16917 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_139_in_ruleRequiredDelegationConnector16929 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16952 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_143_in_ruleRequiredDelegationConnector16964 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredDelegationConnector16987 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_144_in_ruleRequiredDelegationConnector16999 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleRequiredDelegationConnector17022 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleRequiredDelegationConnector17034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCall_Impl_in_entryRuleExternalCall_Impl17070 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExternalCall_Impl17080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_145_in_ruleExternalCall_Impl17117 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExternalCall_Impl17129 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_73_in_ruleExternalCall_Impl17141 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCall_Impl17164 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_103_in_ruleExternalCall_Impl17176 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleExternalCall_Impl17199 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleExternalCall_Impl17211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExternalCallFrequency_in_entryRuleExternalCallFrequency17247 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExternalCallFrequency17257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_146_in_ruleExternalCallFrequency17294 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleExternalCallFrequency17306 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_77_in_ruleExternalCallFrequency17318 = new BitSet(new long[]{0x0000000000000000L,0x000000493B880000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleExternalCall_in_ruleExternalCallFrequency17339 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_147_in_ruleExternalCallFrequency17351 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_ruleCallFrequency_in_ruleExternalCallFrequency17372 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleExternalCallFrequency17384 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCallFrequency_in_entryRuleCallFrequency17420 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCallFrequency17430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_148_in_ruleCallFrequency17467 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCallFrequency17479 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_147_in_ruleCallFrequency17491 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCallFrequency17514 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleCallFrequency17526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependencyRelationship_in_entryRuleDependencyRelationship17562 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDependencyRelationship17572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_149_in_ruleDependencyRelationship17609 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleDependencyRelationship17621 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_150_in_ruleDependencyRelationship17633 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleDependencyRelationship17656 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_151_in_ruleDependencyRelationship17668 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleDependencyRelationship17691 = new BitSet(new long[]{0x0002000000000000L});
+        public static final BitSet FOLLOW_49_in_ruleDependencyRelationship17703 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleDependencyRelationship17726 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDependencyRelationship17738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleCorrelationRelationship_in_entryRuleCorrelationRelationship17774 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleCorrelationRelationship17784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_ruleCorrelationRelationship17821 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleCorrelationRelationship17833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_150_in_ruleCorrelationRelationship17845 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCorrelationRelationship17868 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_153_in_ruleCorrelationRelationship17880 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCorrelationRelationship17903 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_154_in_ruleCorrelationRelationship17915 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleCorrelationRelationship17938 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_155_in_ruleCorrelationRelationship17950 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_ruleComponentInstanceReference_in_ruleCorrelationRelationship17971 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
+        public static final BitSet FOLLOW_156_in_ruleCorrelationRelationship17983 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_ruleComponentInstanceReference_in_ruleCorrelationRelationship18004 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleCorrelationRelationship18016 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleComponentInstanceReference_in_entryRuleComponentInstanceReference18054 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleComponentInstanceReference18064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_ruleComponentInstanceReference18110 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleComponentInstanceReference18122 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_158_in_ruleComponentInstanceReference18135 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleComponentInstanceReference18147 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleComponentInstanceReference18170 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_15_in_ruleComponentInstanceReference18183 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleComponentInstanceReference18206 = new BitSet(new long[]{0x0000000000408000L});
+        public static final BitSet FOLLOW_22_in_ruleComponentInstanceReference18220 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleComponentInstanceReference18234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_159_in_rulePrimitiveTypeEnum18284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_rulePrimitiveTypeEnum18301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_161_in_rulePrimitiveTypeEnum18318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_162_in_rulePrimitiveTypeEnum18335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_163_in_rulePrimitiveTypeEnum18352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_164_in_rulePrimitiveTypeEnum18369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_165_in_rulePrimitiveTypeEnum18386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_166_in_ruleParameterModifier18431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_167_in_ruleParameterModifier18448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_168_in_ruleParameterModifier18465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_169_in_ruleParameterModifier18482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_170_in_ruleCharacterizationType18527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_171_in_ruleCharacterizationType18544 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+
+}
\ No newline at end of file
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/services/RepositoryDSLGrammarAccess.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/services/RepositoryDSLGrammarAccess.java
new file mode 100644
index 0000000000000000000000000000000000000000..a9eead0a4d7c714b2f672f2e2373353ae4ae3bd9
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/services/RepositoryDSLGrammarAccess.java
@@ -0,0 +1,8021 @@
+/*
+* generated by Xtext
+*/
+
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+
+@Singleton
+public class RepositoryDSLGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class RepositoryElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Repository");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRepositoryKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cDatatypesKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cDatatypesAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final RuleCall cDatatypesDataTypeParserRuleCall_5_2_0 = (RuleCall)cDatatypesAssignment_5_2.eContents().get(0);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cDatatypesAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final RuleCall cDatatypesDataTypeParserRuleCall_5_3_1_0 = (RuleCall)cDatatypesAssignment_5_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cInterfacesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cInterfacesAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cInterfacesInterfaceParserRuleCall_6_2_0 = (RuleCall)cInterfacesAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cInterfacesAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cInterfacesInterfaceParserRuleCall_6_3_1_0 = (RuleCall)cInterfacesAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cComponentsKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cComponentsAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cComponentsRepositoryComponentParserRuleCall_7_2_0 = (RuleCall)cComponentsAssignment_7_2.eContents().get(0);
+		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
+		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
+		private final Assignment cComponentsAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
+		private final RuleCall cComponentsRepositoryComponentParserRuleCall_7_3_1_0 = (RuleCall)cComponentsAssignment_7_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//Repository returns repository::Repository:
+		//	"Repository" id=EString "{" "name" name=EString ("datatypes" "{" datatypes+=DataType ("," datatypes+=DataType)* "}")?
+		//	("interfaces" "{" interfaces+=Interface ("," interfaces+=Interface)* "}")? ("components" "{"
+		//	components+=RepositoryComponent ("," components+=RepositoryComponent)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Repository" id=EString "{" "name" name=EString ("datatypes" "{" datatypes+=DataType ("," datatypes+=DataType)* "}")?
+		//("interfaces" "{" interfaces+=Interface ("," interfaces+=Interface)* "}")? ("components" "{"
+		//components+=RepositoryComponent ("," components+=RepositoryComponent)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Repository"
+		public Keyword getRepositoryKeyword_0() { return cRepositoryKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("datatypes" "{" datatypes+=DataType ("," datatypes+=DataType)* "}")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"datatypes"
+		public Keyword getDatatypesKeyword_5_0() { return cDatatypesKeyword_5_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+		//datatypes+=DataType
+		public Assignment getDatatypesAssignment_5_2() { return cDatatypesAssignment_5_2; }
+
+		//DataType
+		public RuleCall getDatatypesDataTypeParserRuleCall_5_2_0() { return cDatatypesDataTypeParserRuleCall_5_2_0; }
+
+		//("," datatypes+=DataType)*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//datatypes+=DataType
+		public Assignment getDatatypesAssignment_5_3_1() { return cDatatypesAssignment_5_3_1; }
+
+		//DataType
+		public RuleCall getDatatypesDataTypeParserRuleCall_5_3_1_0() { return cDatatypesDataTypeParserRuleCall_5_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
+
+		//("interfaces" "{" interfaces+=Interface ("," interfaces+=Interface)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"interfaces"
+		public Keyword getInterfacesKeyword_6_0() { return cInterfacesKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//interfaces+=Interface
+		public Assignment getInterfacesAssignment_6_2() { return cInterfacesAssignment_6_2; }
+
+		//Interface
+		public RuleCall getInterfacesInterfaceParserRuleCall_6_2_0() { return cInterfacesInterfaceParserRuleCall_6_2_0; }
+
+		//("," interfaces+=Interface)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//interfaces+=Interface
+		public Assignment getInterfacesAssignment_6_3_1() { return cInterfacesAssignment_6_3_1; }
+
+		//Interface
+		public RuleCall getInterfacesInterfaceParserRuleCall_6_3_1_0() { return cInterfacesInterfaceParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//("components" "{" components+=RepositoryComponent ("," components+=RepositoryComponent)* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"components"
+		public Keyword getComponentsKeyword_7_0() { return cComponentsKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//components+=RepositoryComponent
+		public Assignment getComponentsAssignment_7_2() { return cComponentsAssignment_7_2; }
+
+		//RepositoryComponent
+		public RuleCall getComponentsRepositoryComponentParserRuleCall_7_2_0() { return cComponentsRepositoryComponentParserRuleCall_7_2_0; }
+
+		//("," components+=RepositoryComponent)*
+		public Group getGroup_7_3() { return cGroup_7_3; }
+
+		//","
+		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
+
+		//components+=RepositoryComponent
+		public Assignment getComponentsAssignment_7_3_1() { return cComponentsAssignment_7_3_1; }
+
+		//RepositoryComponent
+		public RuleCall getComponentsRepositoryComponentParserRuleCall_7_3_1_0() { return cComponentsRepositoryComponentParserRuleCall_7_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class DataTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cCollectionDataTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cCompositeDataTypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cPrimitiveDataTypeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		
+		//DataType returns repository::DataType:
+		//	CollectionDataType | CompositeDataType | PrimitiveDataType;
+		public ParserRule getRule() { return rule; }
+
+		//CollectionDataType | CompositeDataType | PrimitiveDataType
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//CollectionDataType
+		public RuleCall getCollectionDataTypeParserRuleCall_0() { return cCollectionDataTypeParserRuleCall_0; }
+
+		//CompositeDataType
+		public RuleCall getCompositeDataTypeParserRuleCall_1() { return cCompositeDataTypeParserRuleCall_1; }
+
+		//PrimitiveDataType
+		public RuleCall getPrimitiveDataTypeParserRuleCall_2() { return cPrimitiveDataTypeParserRuleCall_2; }
+	}
+
+	public class RepositoryComponentElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RepositoryComponent");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cRepositoryComponent_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cBasicComponentParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cCompositeComponentParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cSubSystemParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//RepositoryComponent returns repository::RepositoryComponent:
+		//	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+		public ParserRule getRule() { return rule; }
+
+		//RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//RepositoryComponent_Impl
+		public RuleCall getRepositoryComponent_ImplParserRuleCall_0() { return cRepositoryComponent_ImplParserRuleCall_0; }
+
+		//BasicComponent
+		public RuleCall getBasicComponentParserRuleCall_1() { return cBasicComponentParserRuleCall_1; }
+
+		//CompositeComponent
+		public RuleCall getCompositeComponentParserRuleCall_2() { return cCompositeComponentParserRuleCall_2; }
+
+		//SubSystem
+		public RuleCall getSubSystemParserRuleCall_3() { return cSubSystemParserRuleCall_3; }
+	}
+
+	public class RelationshipElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Relationship");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDependencyRelationshipParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cCorrelationRelationshipParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//Relationship:
+		//	DependencyRelationship | CorrelationRelationship;
+		public ParserRule getRule() { return rule; }
+
+		//DependencyRelationship | CorrelationRelationship
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DependencyRelationship
+		public RuleCall getDependencyRelationshipParserRuleCall_0() { return cDependencyRelationshipParserRuleCall_0; }
+
+		//CorrelationRelationship
+		public RuleCall getCorrelationRelationshipParserRuleCall_1() { return cCorrelationRelationshipParserRuleCall_1; }
+	}
+
+	public class InfluencingParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InfluencingParameter");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cInfluencingParameter_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cServiceInputParameterParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cExternalCallReturnParameterParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cExternalCallParameterParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//InfluencingParameter:
+		//	InfluencingParameter_Impl | ServiceInputParameter | ExternalCallReturnParameter | ExternalCallParameter;
+		public ParserRule getRule() { return rule; }
+
+		//InfluencingParameter_Impl | ServiceInputParameter | ExternalCallReturnParameter | ExternalCallParameter
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//InfluencingParameter_Impl
+		public RuleCall getInfluencingParameter_ImplParserRuleCall_0() { return cInfluencingParameter_ImplParserRuleCall_0; }
+
+		//ServiceInputParameter
+		public RuleCall getServiceInputParameterParserRuleCall_1() { return cServiceInputParameterParserRuleCall_1; }
+
+		//ExternalCallReturnParameter
+		public RuleCall getExternalCallReturnParameterParserRuleCall_2() { return cExternalCallReturnParameterParserRuleCall_2; }
+
+		//ExternalCallParameter
+		public RuleCall getExternalCallParameterParserRuleCall_3() { return cExternalCallParameterParserRuleCall_3; }
+	}
+
+	public class InterfaceProvidingEntityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InterfaceProvidingEntity");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cRepositoryComponent_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cBasicComponentParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cCompositeComponentParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cSubSystemParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//InterfaceProvidingEntity returns repository::InterfaceProvidingEntity:
+		//	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+		public ParserRule getRule() { return rule; }
+
+		//RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//RepositoryComponent_Impl
+		public RuleCall getRepositoryComponent_ImplParserRuleCall_0() { return cRepositoryComponent_ImplParserRuleCall_0; }
+
+		//BasicComponent
+		public RuleCall getBasicComponentParserRuleCall_1() { return cBasicComponentParserRuleCall_1; }
+
+		//CompositeComponent
+		public RuleCall getCompositeComponentParserRuleCall_2() { return cCompositeComponentParserRuleCall_2; }
+
+		//SubSystem
+		public RuleCall getSubSystemParserRuleCall_3() { return cSubSystemParserRuleCall_3; }
+	}
+
+	public class InterfaceProvidingRequiringEntityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InterfaceProvidingRequiringEntity");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cRepositoryComponent_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cBasicComponentParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cCompositeComponentParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cSubSystemParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//InterfaceProvidingRequiringEntity returns repository::InterfaceProvidingRequiringEntity:
+		//	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+		public ParserRule getRule() { return rule; }
+
+		//RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//RepositoryComponent_Impl
+		public RuleCall getRepositoryComponent_ImplParserRuleCall_0() { return cRepositoryComponent_ImplParserRuleCall_0; }
+
+		//BasicComponent
+		public RuleCall getBasicComponentParserRuleCall_1() { return cBasicComponentParserRuleCall_1; }
+
+		//CompositeComponent
+		public RuleCall getCompositeComponentParserRuleCall_2() { return cCompositeComponentParserRuleCall_2; }
+
+		//SubSystem
+		public RuleCall getSubSystemParserRuleCall_3() { return cSubSystemParserRuleCall_3; }
+	}
+
+	public class ServiceBehaviorAbstractionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ServiceBehaviorAbstraction");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cFineGrainedBehaviorParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cCoarseGrainedBehaviorParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cBlackBoxBehaviorParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		
+		//ServiceBehaviorAbstraction returns servicebehavior::ServiceBehaviorAbstraction:
+		//	FineGrainedBehavior | CoarseGrainedBehavior | BlackBoxBehavior;
+		public ParserRule getRule() { return rule; }
+
+		//FineGrainedBehavior | CoarseGrainedBehavior | BlackBoxBehavior
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//FineGrainedBehavior
+		public RuleCall getFineGrainedBehaviorParserRuleCall_0() { return cFineGrainedBehaviorParserRuleCall_0; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorParserRuleCall_1() { return cCoarseGrainedBehaviorParserRuleCall_1; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorParserRuleCall_2() { return cBlackBoxBehaviorParserRuleCall_2; }
+	}
+
+	public class ExternalCallElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalCall");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cExternalCall_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cExternalCallActionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//ExternalCall returns servicebehavior::ExternalCall:
+		//	ExternalCall_Impl | ExternalCallAction;
+		public ParserRule getRule() { return rule; }
+
+		//ExternalCall_Impl | ExternalCallAction
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ExternalCall_Impl
+		public RuleCall getExternalCall_ImplParserRuleCall_0() { return cExternalCall_ImplParserRuleCall_0; }
+
+		//ExternalCallAction
+		public RuleCall getExternalCallActionParserRuleCall_1() { return cExternalCallActionParserRuleCall_1; }
+	}
+
+	public class AbstractActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AbstractAction");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cAbstractAction_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cStartActionParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cStopActionParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cAcquireActionParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cReleaseActionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cInternalActionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cForkActionParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cBranchActionParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cLoopActionParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cExternalCallActionParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		
+		//AbstractAction returns servicebehavior::AbstractAction:
+		//	AbstractAction_Impl | StartAction | StopAction | AcquireAction | ReleaseAction | InternalAction | ForkAction |
+		//	BranchAction | LoopAction | ExternalCallAction;
+		public ParserRule getRule() { return rule; }
+
+		//AbstractAction_Impl | StartAction | StopAction | AcquireAction | ReleaseAction | InternalAction | ForkAction |
+		//BranchAction | LoopAction | ExternalCallAction
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//AbstractAction_Impl
+		public RuleCall getAbstractAction_ImplParserRuleCall_0() { return cAbstractAction_ImplParserRuleCall_0; }
+
+		//StartAction
+		public RuleCall getStartActionParserRuleCall_1() { return cStartActionParserRuleCall_1; }
+
+		//StopAction
+		public RuleCall getStopActionParserRuleCall_2() { return cStopActionParserRuleCall_2; }
+
+		//AcquireAction
+		public RuleCall getAcquireActionParserRuleCall_3() { return cAcquireActionParserRuleCall_3; }
+
+		//ReleaseAction
+		public RuleCall getReleaseActionParserRuleCall_4() { return cReleaseActionParserRuleCall_4; }
+
+		//InternalAction
+		public RuleCall getInternalActionParserRuleCall_5() { return cInternalActionParserRuleCall_5; }
+
+		//ForkAction
+		public RuleCall getForkActionParserRuleCall_6() { return cForkActionParserRuleCall_6; }
+
+		//BranchAction
+		public RuleCall getBranchActionParserRuleCall_7() { return cBranchActionParserRuleCall_7; }
+
+		//LoopAction
+		public RuleCall getLoopActionParserRuleCall_8() { return cLoopActionParserRuleCall_8; }
+
+		//ExternalCallAction
+		public RuleCall getExternalCallActionParserRuleCall_9() { return cExternalCallActionParserRuleCall_9; }
+	}
+
+	public class ComponentInternalBehaviorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ComponentInternalBehavior");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cComponentInternalBehavior_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cFineGrainedBehaviorParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//ComponentInternalBehavior returns servicebehavior::ComponentInternalBehavior:
+		//	ComponentInternalBehavior_Impl | FineGrainedBehavior;
+		public ParserRule getRule() { return rule; }
+
+		//ComponentInternalBehavior_Impl | FineGrainedBehavior
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ComponentInternalBehavior_Impl
+		public RuleCall getComponentInternalBehavior_ImplParserRuleCall_0() { return cComponentInternalBehavior_ImplParserRuleCall_0; }
+
+		//FineGrainedBehavior
+		public RuleCall getFineGrainedBehaviorParserRuleCall_1() { return cFineGrainedBehaviorParserRuleCall_1; }
+	}
+
+	public class ProcessingResourceTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProcessingResourceType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cProcessingResourceType_ImplParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cCommunicationLinkResourceTypeParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//ProcessingResourceType returns resourcetype::ProcessingResourceType:
+		//	ProcessingResourceType_Impl | CommunicationLinkResourceType;
+		public ParserRule getRule() { return rule; }
+
+		//ProcessingResourceType_Impl | CommunicationLinkResourceType
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ProcessingResourceType_Impl
+		public RuleCall getProcessingResourceType_ImplParserRuleCall_0() { return cProcessingResourceType_ImplParserRuleCall_0; }
+
+		//CommunicationLinkResourceType
+		public RuleCall getCommunicationLinkResourceTypeParserRuleCall_1() { return cCommunicationLinkResourceTypeParserRuleCall_1; }
+	}
+
+	public class ProbabilityFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProbabilityFunction");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cProbabilityMassFunctionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cProbabilityDensityFunction_ImplParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cBoxedPDFParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cContinuousPDF_ImplParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cNormalDistributionParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cExponentialDistributionParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		
+		//ProbabilityFunction returns functions::ProbabilityFunction:
+		//	ProbabilityMassFunction | ProbabilityDensityFunction_Impl | BoxedPDF | ContinuousPDF_Impl | NormalDistribution |
+		//	ExponentialDistribution;
+		public ParserRule getRule() { return rule; }
+
+		//ProbabilityMassFunction | ProbabilityDensityFunction_Impl | BoxedPDF | ContinuousPDF_Impl | NormalDistribution |
+		//ExponentialDistribution
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ProbabilityMassFunction
+		public RuleCall getProbabilityMassFunctionParserRuleCall_0() { return cProbabilityMassFunctionParserRuleCall_0; }
+
+		//ProbabilityDensityFunction_Impl
+		public RuleCall getProbabilityDensityFunction_ImplParserRuleCall_1() { return cProbabilityDensityFunction_ImplParserRuleCall_1; }
+
+		//BoxedPDF
+		public RuleCall getBoxedPDFParserRuleCall_2() { return cBoxedPDFParserRuleCall_2; }
+
+		//ContinuousPDF_Impl
+		public RuleCall getContinuousPDF_ImplParserRuleCall_3() { return cContinuousPDF_ImplParserRuleCall_3; }
+
+		//NormalDistribution
+		public RuleCall getNormalDistributionParserRuleCall_4() { return cNormalDistributionParserRuleCall_4; }
+
+		//ExponentialDistribution
+		public RuleCall getExponentialDistributionParserRuleCall_5() { return cExponentialDistributionParserRuleCall_5; }
+	}
+
+	public class EStringElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EString");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//EString returns ecore::EString:
+		//	STRING | ID;
+		public ParserRule getRule() { return rule; }
+
+		//STRING | ID
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//STRING
+		public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
+	}
+
+	public class InterfaceElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Interface");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cInterfaceKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cParentInterfacesKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cParentInterfacesAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final CrossReference cParentInterfacesInterfaceCrossReference_5_2_0 = (CrossReference)cParentInterfacesAssignment_5_2.eContents().get(0);
+		private final RuleCall cParentInterfacesInterfaceEStringParserRuleCall_5_2_0_1 = (RuleCall)cParentInterfacesInterfaceCrossReference_5_2_0.eContents().get(1);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cParentInterfacesAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final CrossReference cParentInterfacesInterfaceCrossReference_5_3_1_0 = (CrossReference)cParentInterfacesAssignment_5_3_1.eContents().get(0);
+		private final RuleCall cParentInterfacesInterfaceEStringParserRuleCall_5_3_1_0_1 = (RuleCall)cParentInterfacesInterfaceCrossReference_5_3_1_0.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cSignaturesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cSignaturesAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cSignaturesSignatureParserRuleCall_6_2_0 = (RuleCall)cSignaturesAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cSignaturesAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cSignaturesSignatureParserRuleCall_6_3_1_0 = (RuleCall)cSignaturesAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//Interface returns repository::Interface:
+		//	"Interface" id=EString "{" "name" name=EString ("parentInterfaces" "("
+		//	parentInterfaces+=[repository::Interface|EString] ("," parentInterfaces+=[repository::Interface|EString])* ")")?
+		//	("signatures" "{" signatures+=Signature ("," signatures+=Signature)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Interface" id=EString "{" "name" name=EString ("parentInterfaces" "(" parentInterfaces+=[repository::Interface|EString]
+		//("," parentInterfaces+=[repository::Interface|EString])* ")")? ("signatures" "{" signatures+=Signature (","
+		//signatures+=Signature)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Interface"
+		public Keyword getInterfaceKeyword_0() { return cInterfaceKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("parentInterfaces" "(" parentInterfaces+=[repository::Interface|EString] (","
+		//parentInterfaces+=[repository::Interface|EString])* ")")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"parentInterfaces"
+		public Keyword getParentInterfacesKeyword_5_0() { return cParentInterfacesKeyword_5_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
+
+		//parentInterfaces+=[repository::Interface|EString]
+		public Assignment getParentInterfacesAssignment_5_2() { return cParentInterfacesAssignment_5_2; }
+
+		//[repository::Interface|EString]
+		public CrossReference getParentInterfacesInterfaceCrossReference_5_2_0() { return cParentInterfacesInterfaceCrossReference_5_2_0; }
+
+		//EString
+		public RuleCall getParentInterfacesInterfaceEStringParserRuleCall_5_2_0_1() { return cParentInterfacesInterfaceEStringParserRuleCall_5_2_0_1; }
+
+		//("," parentInterfaces+=[repository::Interface|EString])*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//parentInterfaces+=[repository::Interface|EString]
+		public Assignment getParentInterfacesAssignment_5_3_1() { return cParentInterfacesAssignment_5_3_1; }
+
+		//[repository::Interface|EString]
+		public CrossReference getParentInterfacesInterfaceCrossReference_5_3_1_0() { return cParentInterfacesInterfaceCrossReference_5_3_1_0; }
+
+		//EString
+		public RuleCall getParentInterfacesInterfaceEStringParserRuleCall_5_3_1_0_1() { return cParentInterfacesInterfaceEStringParserRuleCall_5_3_1_0_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5_4() { return cRightParenthesisKeyword_5_4; }
+
+		//("signatures" "{" signatures+=Signature ("," signatures+=Signature)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"signatures"
+		public Keyword getSignaturesKeyword_6_0() { return cSignaturesKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//signatures+=Signature
+		public Assignment getSignaturesAssignment_6_2() { return cSignaturesAssignment_6_2; }
+
+		//Signature
+		public RuleCall getSignaturesSignatureParserRuleCall_6_2_0() { return cSignaturesSignatureParserRuleCall_6_2_0; }
+
+		//("," signatures+=Signature)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//signatures+=Signature
+		public Assignment getSignaturesAssignment_6_3_1() { return cSignaturesAssignment_6_3_1; }
+
+		//Signature
+		public RuleCall getSignaturesSignatureParserRuleCall_6_3_1_0() { return cSignaturesSignatureParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class RepositoryComponent_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RepositoryComponent_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRepositoryComponentKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cRelationshipKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cRelationshipAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_2_0 = (CrossReference)cRelationshipAssignment_5_2.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_2_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_2_0.eContents().get(1);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cRelationshipAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_3_1_0 = (CrossReference)cRelationshipAssignment_5_3_1.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_3_1_0.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cProvidedRolesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cProvidedRolesAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_2_0 = (RuleCall)cProvidedRolesAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cProvidedRolesAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0 = (RuleCall)cProvidedRolesAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cBlackBoxBehaviorKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cBlackBoxBehaviorAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_2.eContents().get(0);
+		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
+		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
+		private final Assignment cBlackBoxBehaviorAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
+		private final Keyword cRequiredRolesKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
+		private final Assignment cRequiredRolesAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_2_0 = (RuleCall)cRequiredRolesAssignment_8_2.eContents().get(0);
+		private final Group cGroup_8_3 = (Group)cGroup_8.eContents().get(3);
+		private final Keyword cCommaKeyword_8_3_0 = (Keyword)cGroup_8_3.eContents().get(0);
+		private final Assignment cRequiredRolesAssignment_8_3_1 = (Assignment)cGroup_8_3.eContents().get(1);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0 = (RuleCall)cRequiredRolesAssignment_8_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
+		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
+		private final Keyword cCoarseGrainedBehaviorKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_2.eContents().get(0);
+		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
+		private final Keyword cCommaKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_10 = (Keyword)cGroup.eContents().get(10);
+		
+		//RepositoryComponent_Impl returns repository::RepositoryComponent:
+		//	"RepositoryComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"RepositoryComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"RepositoryComponent"
+		public Keyword getRepositoryComponentKeyword_0() { return cRepositoryComponentKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"relationship"
+		public Keyword getRelationshipKeyword_5_0() { return cRelationshipKeyword_5_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_2() { return cRelationshipAssignment_5_2; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_2_0() { return cRelationshipRelationshipCrossReference_5_2_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_2_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_2_0_1; }
+
+		//("," relationship+=[Relationship|EString])*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_3_1() { return cRelationshipAssignment_5_3_1; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_3_1_0() { return cRelationshipRelationshipCrossReference_5_3_1_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5_4() { return cRightParenthesisKeyword_5_4; }
+
+		//("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"providedRoles"
+		public Keyword getProvidedRolesKeyword_6_0() { return cProvidedRolesKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_2() { return cProvidedRolesAssignment_6_2; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_2_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_2_0; }
+
+		//("," providedRoles+=ProvidedRole)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_3_1() { return cProvidedRolesAssignment_6_3_1; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"blackBoxBehavior"
+		public Keyword getBlackBoxBehaviorKeyword_7_0() { return cBlackBoxBehaviorKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_2() { return cBlackBoxBehaviorAssignment_7_2; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0; }
+
+		//("," blackBoxBehavior+=BlackBoxBehavior)*
+		public Group getGroup_7_3() { return cGroup_7_3; }
+
+		//","
+		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_3_1() { return cBlackBoxBehaviorAssignment_7_3_1; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+		//("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+		public Group getGroup_8() { return cGroup_8; }
+
+		//"requiredRoles"
+		public Keyword getRequiredRolesKeyword_8_0() { return cRequiredRolesKeyword_8_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_8_1() { return cLeftCurlyBracketKeyword_8_1; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_2() { return cRequiredRolesAssignment_8_2; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_2_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_2_0; }
+
+		//("," requiredRoles+=RequiredRole)*
+		public Group getGroup_8_3() { return cGroup_8_3; }
+
+		//","
+		public Keyword getCommaKeyword_8_3_0() { return cCommaKeyword_8_3_0; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_3_1() { return cRequiredRolesAssignment_8_3_1; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8_4() { return cRightCurlyBracketKeyword_8_4; }
+
+		//("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+		public Group getGroup_9() { return cGroup_9; }
+
+		//"coarseGrainedBehavior"
+		public Keyword getCoarseGrainedBehaviorKeyword_9_0() { return cCoarseGrainedBehaviorKeyword_9_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_2() { return cCoarseGrainedBehaviorAssignment_9_2; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0; }
+
+		//("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+		public Group getGroup_9_3() { return cGroup_9_3; }
+
+		//","
+		public Keyword getCommaKeyword_9_3_0() { return cCommaKeyword_9_3_0; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_3_1() { return cCoarseGrainedBehaviorAssignment_9_3_1; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9_4() { return cRightCurlyBracketKeyword_9_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_10() { return cRightCurlyBracketKeyword_10; }
+	}
+
+	public class CollectionDataTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CollectionDataType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCollectionDataTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cInnerTypeKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cInnerTypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cInnerTypeDataTypeCrossReference_6_0 = (CrossReference)cInnerTypeAssignment_6.eContents().get(0);
+		private final RuleCall cInnerTypeDataTypeEStringParserRuleCall_6_0_1 = (RuleCall)cInnerTypeDataTypeCrossReference_6_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//CollectionDataType returns repository::CollectionDataType:
+		//	"CollectionDataType" id=EString "{" "name" name=EString "innerType" innerType=[repository::DataType|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CollectionDataType" id=EString "{" "name" name=EString "innerType" innerType=[repository::DataType|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CollectionDataType"
+		public Keyword getCollectionDataTypeKeyword_0() { return cCollectionDataTypeKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"innerType"
+		public Keyword getInnerTypeKeyword_5() { return cInnerTypeKeyword_5; }
+
+		//innerType=[repository::DataType|EString]
+		public Assignment getInnerTypeAssignment_6() { return cInnerTypeAssignment_6; }
+
+		//[repository::DataType|EString]
+		public CrossReference getInnerTypeDataTypeCrossReference_6_0() { return cInnerTypeDataTypeCrossReference_6_0; }
+
+		//EString
+		public RuleCall getInnerTypeDataTypeEStringParserRuleCall_6_0_1() { return cInnerTypeDataTypeEStringParserRuleCall_6_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class CompositeDataTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CompositeDataType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCompositeDataTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cParentTypesKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cParentTypesAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final CrossReference cParentTypesCompositeDataTypeCrossReference_5_2_0 = (CrossReference)cParentTypesAssignment_5_2.eContents().get(0);
+		private final RuleCall cParentTypesCompositeDataTypeEStringParserRuleCall_5_2_0_1 = (RuleCall)cParentTypesCompositeDataTypeCrossReference_5_2_0.eContents().get(1);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cParentTypesAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final CrossReference cParentTypesCompositeDataTypeCrossReference_5_3_1_0 = (CrossReference)cParentTypesAssignment_5_3_1.eContents().get(0);
+		private final RuleCall cParentTypesCompositeDataTypeEStringParserRuleCall_5_3_1_0_1 = (RuleCall)cParentTypesCompositeDataTypeCrossReference_5_3_1_0.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cInnerDeclarationsKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cInnerDeclarationsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cInnerDeclarationsInnerDeclarationParserRuleCall_6_2_0 = (RuleCall)cInnerDeclarationsAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cInnerDeclarationsAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cInnerDeclarationsInnerDeclarationParserRuleCall_6_3_1_0 = (RuleCall)cInnerDeclarationsAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//CompositeDataType returns repository::CompositeDataType:
+		//	"CompositeDataType" id=EString "{" "name" name=EString ("parentTypes" "("
+		//	parentTypes+=[repository::CompositeDataType|EString] ("," parentTypes+=[repository::CompositeDataType|EString])* ")")?
+		//	("innerDeclarations" "{" innerDeclarations+=InnerDeclaration ("," innerDeclarations+=InnerDeclaration)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CompositeDataType" id=EString "{" "name" name=EString ("parentTypes" "("
+		//parentTypes+=[repository::CompositeDataType|EString] ("," parentTypes+=[repository::CompositeDataType|EString])* ")")?
+		//("innerDeclarations" "{" innerDeclarations+=InnerDeclaration ("," innerDeclarations+=InnerDeclaration)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CompositeDataType"
+		public Keyword getCompositeDataTypeKeyword_0() { return cCompositeDataTypeKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("parentTypes" "(" parentTypes+=[repository::CompositeDataType|EString] (","
+		//parentTypes+=[repository::CompositeDataType|EString])* ")")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"parentTypes"
+		public Keyword getParentTypesKeyword_5_0() { return cParentTypesKeyword_5_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
+
+		//parentTypes+=[repository::CompositeDataType|EString]
+		public Assignment getParentTypesAssignment_5_2() { return cParentTypesAssignment_5_2; }
+
+		//[repository::CompositeDataType|EString]
+		public CrossReference getParentTypesCompositeDataTypeCrossReference_5_2_0() { return cParentTypesCompositeDataTypeCrossReference_5_2_0; }
+
+		//EString
+		public RuleCall getParentTypesCompositeDataTypeEStringParserRuleCall_5_2_0_1() { return cParentTypesCompositeDataTypeEStringParserRuleCall_5_2_0_1; }
+
+		//("," parentTypes+=[repository::CompositeDataType|EString])*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//parentTypes+=[repository::CompositeDataType|EString]
+		public Assignment getParentTypesAssignment_5_3_1() { return cParentTypesAssignment_5_3_1; }
+
+		//[repository::CompositeDataType|EString]
+		public CrossReference getParentTypesCompositeDataTypeCrossReference_5_3_1_0() { return cParentTypesCompositeDataTypeCrossReference_5_3_1_0; }
+
+		//EString
+		public RuleCall getParentTypesCompositeDataTypeEStringParserRuleCall_5_3_1_0_1() { return cParentTypesCompositeDataTypeEStringParserRuleCall_5_3_1_0_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5_4() { return cRightParenthesisKeyword_5_4; }
+
+		//("innerDeclarations" "{" innerDeclarations+=InnerDeclaration ("," innerDeclarations+=InnerDeclaration)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"innerDeclarations"
+		public Keyword getInnerDeclarationsKeyword_6_0() { return cInnerDeclarationsKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//innerDeclarations+=InnerDeclaration
+		public Assignment getInnerDeclarationsAssignment_6_2() { return cInnerDeclarationsAssignment_6_2; }
+
+		//InnerDeclaration
+		public RuleCall getInnerDeclarationsInnerDeclarationParserRuleCall_6_2_0() { return cInnerDeclarationsInnerDeclarationParserRuleCall_6_2_0; }
+
+		//("," innerDeclarations+=InnerDeclaration)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//innerDeclarations+=InnerDeclaration
+		public Assignment getInnerDeclarationsAssignment_6_3_1() { return cInnerDeclarationsAssignment_6_3_1; }
+
+		//InnerDeclaration
+		public RuleCall getInnerDeclarationsInnerDeclarationParserRuleCall_6_3_1_0() { return cInnerDeclarationsInnerDeclarationParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class PrimitiveDataTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PrimitiveDataType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPrimitiveDataTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cTypePrimitiveTypeEnumEnumRuleCall_3_0 = (RuleCall)cTypeAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//PrimitiveDataType returns repository::PrimitiveDataType:
+		//	"PrimitiveDataType" "{" "type" type=PrimitiveTypeEnum "}";
+		public ParserRule getRule() { return rule; }
+
+		//"PrimitiveDataType" "{" "type" type=PrimitiveTypeEnum "}"
+		public Group getGroup() { return cGroup; }
+
+		//"PrimitiveDataType"
+		public Keyword getPrimitiveDataTypeKeyword_0() { return cPrimitiveDataTypeKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"type"
+		public Keyword getTypeKeyword_2() { return cTypeKeyword_2; }
+
+		//type=PrimitiveTypeEnum
+		public Assignment getTypeAssignment_3() { return cTypeAssignment_3; }
+
+		//PrimitiveTypeEnum
+		public RuleCall getTypePrimitiveTypeEnumEnumRuleCall_3_0() { return cTypePrimitiveTypeEnumEnumRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class InnerDeclarationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InnerDeclaration");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cInnerDeclarationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cDataTypeKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDataTypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDataTypeDataTypeCrossReference_6_0 = (CrossReference)cDataTypeAssignment_6.eContents().get(0);
+		private final RuleCall cDataTypeDataTypeEStringParserRuleCall_6_0_1 = (RuleCall)cDataTypeDataTypeCrossReference_6_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//InnerDeclaration returns repository::InnerDeclaration:
+		//	"InnerDeclaration" id=EString "{" "name" name=EString "dataType" dataType=[repository::DataType|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"InnerDeclaration" id=EString "{" "name" name=EString "dataType" dataType=[repository::DataType|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"InnerDeclaration"
+		public Keyword getInnerDeclarationKeyword_0() { return cInnerDeclarationKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"dataType"
+		public Keyword getDataTypeKeyword_5() { return cDataTypeKeyword_5; }
+
+		//dataType=[repository::DataType|EString]
+		public Assignment getDataTypeAssignment_6() { return cDataTypeAssignment_6; }
+
+		//[repository::DataType|EString]
+		public CrossReference getDataTypeDataTypeCrossReference_6_0() { return cDataTypeDataTypeCrossReference_6_0; }
+
+		//EString
+		public RuleCall getDataTypeDataTypeEStringParserRuleCall_6_0_1() { return cDataTypeDataTypeEStringParserRuleCall_6_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class SignatureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Signature");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSignatureKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cReturnTypeKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Assignment cReturnTypeAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final CrossReference cReturnTypeDataTypeCrossReference_5_1_0 = (CrossReference)cReturnTypeAssignment_5_1.eContents().get(0);
+		private final RuleCall cReturnTypeDataTypeEStringParserRuleCall_5_1_0_1 = (RuleCall)cReturnTypeDataTypeCrossReference_5_1_0.eContents().get(1);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cParametersKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cParametersAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cParametersParameterParserRuleCall_6_2_0 = (RuleCall)cParametersAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cParametersAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cParametersParameterParserRuleCall_6_3_1_0 = (RuleCall)cParametersAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//Signature returns repository::Signature:
+		//	"Signature" id=EString "{" "name" name=EString ("returnType" returnType=[repository::DataType|EString])? ("parameters"
+		//	"{" parameters+=Parameter ("," parameters+=Parameter)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Signature" id=EString "{" "name" name=EString ("returnType" returnType=[repository::DataType|EString])? ("parameters"
+		//"{" parameters+=Parameter ("," parameters+=Parameter)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Signature"
+		public Keyword getSignatureKeyword_0() { return cSignatureKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("returnType" returnType=[repository::DataType|EString])?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"returnType"
+		public Keyword getReturnTypeKeyword_5_0() { return cReturnTypeKeyword_5_0; }
+
+		//returnType=[repository::DataType|EString]
+		public Assignment getReturnTypeAssignment_5_1() { return cReturnTypeAssignment_5_1; }
+
+		//[repository::DataType|EString]
+		public CrossReference getReturnTypeDataTypeCrossReference_5_1_0() { return cReturnTypeDataTypeCrossReference_5_1_0; }
+
+		//EString
+		public RuleCall getReturnTypeDataTypeEStringParserRuleCall_5_1_0_1() { return cReturnTypeDataTypeEStringParserRuleCall_5_1_0_1; }
+
+		//("parameters" "{" parameters+=Parameter ("," parameters+=Parameter)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"parameters"
+		public Keyword getParametersKeyword_6_0() { return cParametersKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//parameters+=Parameter
+		public Assignment getParametersAssignment_6_2() { return cParametersAssignment_6_2; }
+
+		//Parameter
+		public RuleCall getParametersParameterParserRuleCall_6_2_0() { return cParametersParameterParserRuleCall_6_2_0; }
+
+		//("," parameters+=Parameter)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//parameters+=Parameter
+		public Assignment getParametersAssignment_6_3_1() { return cParametersAssignment_6_3_1; }
+
+		//Parameter
+		public RuleCall getParametersParameterParserRuleCall_6_3_1_0() { return cParametersParameterParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class ParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Parameter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cParameterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameEStringParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cModifierKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cModifierAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cModifierParameterModifierEnumRuleCall_4_0 = (RuleCall)cModifierAssignment_4.eContents().get(0);
+		private final Keyword cDataTypeKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDataTypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDataTypeDataTypeCrossReference_6_0 = (CrossReference)cDataTypeAssignment_6.eContents().get(0);
+		private final RuleCall cDataTypeDataTypeEStringParserRuleCall_6_0_1 = (RuleCall)cDataTypeDataTypeCrossReference_6_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//Parameter returns repository::Parameter:
+		//	"Parameter" name=EString "{" "modifier" modifier=ParameterModifier "dataType" dataType=[repository::DataType|EString]
+		//	"}";
+		public ParserRule getRule() { return rule; }
+
+		//"Parameter" name=EString "{" "modifier" modifier=ParameterModifier "dataType" dataType=[repository::DataType|EString]
+		//"}"
+		public Group getGroup() { return cGroup; }
+
+		//"Parameter"
+		public Keyword getParameterKeyword_0() { return cParameterKeyword_0; }
+
+		//name=EString
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_1_0() { return cNameEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"modifier"
+		public Keyword getModifierKeyword_3() { return cModifierKeyword_3; }
+
+		//modifier=ParameterModifier
+		public Assignment getModifierAssignment_4() { return cModifierAssignment_4; }
+
+		//ParameterModifier
+		public RuleCall getModifierParameterModifierEnumRuleCall_4_0() { return cModifierParameterModifierEnumRuleCall_4_0; }
+
+		//"dataType"
+		public Keyword getDataTypeKeyword_5() { return cDataTypeKeyword_5; }
+
+		//dataType=[repository::DataType|EString]
+		public Assignment getDataTypeAssignment_6() { return cDataTypeAssignment_6; }
+
+		//[repository::DataType|EString]
+		public CrossReference getDataTypeDataTypeCrossReference_6_0() { return cDataTypeDataTypeCrossReference_6_0; }
+
+		//EString
+		public RuleCall getDataTypeDataTypeEStringParserRuleCall_6_0_1() { return cDataTypeDataTypeEStringParserRuleCall_6_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class ProvidedRoleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProvidedRole");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cProvidedRoleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cInterfaceKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cInterfaceAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cInterfaceInterfaceCrossReference_6_0 = (CrossReference)cInterfaceAssignment_6.eContents().get(0);
+		private final RuleCall cInterfaceInterfaceEStringParserRuleCall_6_0_1 = (RuleCall)cInterfaceInterfaceCrossReference_6_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//ProvidedRole returns repository::ProvidedRole:
+		//	"ProvidedRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ProvidedRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ProvidedRole"
+		public Keyword getProvidedRoleKeyword_0() { return cProvidedRoleKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"interface"
+		public Keyword getInterfaceKeyword_5() { return cInterfaceKeyword_5; }
+
+		//interface=[repository::Interface|EString]
+		public Assignment getInterfaceAssignment_6() { return cInterfaceAssignment_6; }
+
+		//[repository::Interface|EString]
+		public CrossReference getInterfaceInterfaceCrossReference_6_0() { return cInterfaceInterfaceCrossReference_6_0; }
+
+		//EString
+		public RuleCall getInterfaceInterfaceEStringParserRuleCall_6_0_1() { return cInterfaceInterfaceEStringParserRuleCall_6_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class BlackBoxBehaviorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BlackBoxBehavior");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBlackBoxBehaviorKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cDescribedSignatureKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cDescribedSignatureAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cDescribedSignatureSignatureCrossReference_2_1_0 = (CrossReference)cDescribedSignatureAssignment_2_1.eContents().get(0);
+		private final RuleCall cDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1 = (RuleCall)cDescribedSignatureSignatureCrossReference_2_1_0.eContents().get(1);
+		private final Keyword cDescribedEntityKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDescribedEntityAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDescribedEntityInterfaceProvidingEntityCrossReference_4_0 = (CrossReference)cDescribedEntityAssignment_4.eContents().get(0);
+		private final RuleCall cDescribedEntityInterfaceProvidingEntityEStringParserRuleCall_4_0_1 = (RuleCall)cDescribedEntityInterfaceProvidingEntityCrossReference_4_0.eContents().get(1);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cInfluencingParameterKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cInfluencingParameterAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final RuleCall cInfluencingParameterInfluencingParameterParserRuleCall_5_2_0 = (RuleCall)cInfluencingParameterAssignment_5_2.eContents().get(0);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cInfluencingParameterAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final RuleCall cInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0 = (RuleCall)cInfluencingParameterAssignment_5_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cResponseTimeSpecificationKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Assignment cResponseTimeSpecificationAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
+		private final RuleCall cResponseTimeSpecificationResponseTimeSpecificationParserRuleCall_6_1_0 = (RuleCall)cResponseTimeSpecificationAssignment_6_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//BlackBoxBehavior returns servicebehavior::BlackBoxBehavior:
+		//	"BlackBoxBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "describedEntity"
+		//	describedEntity=[repository::InterfaceProvidingEntity|EString] ("influencingParameter" "{"
+		//	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+		//	("responseTimeSpecification" responseTimeSpecification=ResponseTimeSpecification)? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"BlackBoxBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "describedEntity"
+		//describedEntity=[repository::InterfaceProvidingEntity|EString] ("influencingParameter" "{"
+		//influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+		//("responseTimeSpecification" responseTimeSpecification=ResponseTimeSpecification)? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"BlackBoxBehavior"
+		public Keyword getBlackBoxBehaviorKeyword_0() { return cBlackBoxBehaviorKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("describedSignature" describedSignature=[repository::Signature|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"describedSignature"
+		public Keyword getDescribedSignatureKeyword_2_0() { return cDescribedSignatureKeyword_2_0; }
+
+		//describedSignature=[repository::Signature|EString]
+		public Assignment getDescribedSignatureAssignment_2_1() { return cDescribedSignatureAssignment_2_1; }
+
+		//[repository::Signature|EString]
+		public CrossReference getDescribedSignatureSignatureCrossReference_2_1_0() { return cDescribedSignatureSignatureCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1() { return cDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1; }
+
+		//"describedEntity"
+		public Keyword getDescribedEntityKeyword_3() { return cDescribedEntityKeyword_3; }
+
+		//describedEntity=[repository::InterfaceProvidingEntity|EString]
+		public Assignment getDescribedEntityAssignment_4() { return cDescribedEntityAssignment_4; }
+
+		//[repository::InterfaceProvidingEntity|EString]
+		public CrossReference getDescribedEntityInterfaceProvidingEntityCrossReference_4_0() { return cDescribedEntityInterfaceProvidingEntityCrossReference_4_0; }
+
+		//EString
+		public RuleCall getDescribedEntityInterfaceProvidingEntityEStringParserRuleCall_4_0_1() { return cDescribedEntityInterfaceProvidingEntityEStringParserRuleCall_4_0_1; }
+
+		//("influencingParameter" "{" influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)*
+		//"}")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"influencingParameter"
+		public Keyword getInfluencingParameterKeyword_5_0() { return cInfluencingParameterKeyword_5_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+		//influencingParameter+=InfluencingParameter
+		public Assignment getInfluencingParameterAssignment_5_2() { return cInfluencingParameterAssignment_5_2; }
+
+		//InfluencingParameter
+		public RuleCall getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0() { return cInfluencingParameterInfluencingParameterParserRuleCall_5_2_0; }
+
+		//("," influencingParameter+=InfluencingParameter)*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//influencingParameter+=InfluencingParameter
+		public Assignment getInfluencingParameterAssignment_5_3_1() { return cInfluencingParameterAssignment_5_3_1; }
+
+		//InfluencingParameter
+		public RuleCall getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0() { return cInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
+
+		//("responseTimeSpecification" responseTimeSpecification=ResponseTimeSpecification)?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"responseTimeSpecification"
+		public Keyword getResponseTimeSpecificationKeyword_6_0() { return cResponseTimeSpecificationKeyword_6_0; }
+
+		//responseTimeSpecification=ResponseTimeSpecification
+		public Assignment getResponseTimeSpecificationAssignment_6_1() { return cResponseTimeSpecificationAssignment_6_1; }
+
+		//ResponseTimeSpecification
+		public RuleCall getResponseTimeSpecificationResponseTimeSpecificationParserRuleCall_6_1_0() { return cResponseTimeSpecificationResponseTimeSpecificationParserRuleCall_6_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class RequiredRoleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RequiredRole");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRequiredRoleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cInterfaceKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cInterfaceAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cInterfaceInterfaceCrossReference_6_0 = (CrossReference)cInterfaceAssignment_6.eContents().get(0);
+		private final RuleCall cInterfaceInterfaceEStringParserRuleCall_6_0_1 = (RuleCall)cInterfaceInterfaceCrossReference_6_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//RequiredRole returns repository::RequiredRole:
+		//	"RequiredRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"RequiredRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"RequiredRole"
+		public Keyword getRequiredRoleKeyword_0() { return cRequiredRoleKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"interface"
+		public Keyword getInterfaceKeyword_5() { return cInterfaceKeyword_5; }
+
+		//interface=[repository::Interface|EString]
+		public Assignment getInterfaceAssignment_6() { return cInterfaceAssignment_6; }
+
+		//[repository::Interface|EString]
+		public CrossReference getInterfaceInterfaceCrossReference_6_0() { return cInterfaceInterfaceCrossReference_6_0; }
+
+		//EString
+		public RuleCall getInterfaceInterfaceEStringParserRuleCall_6_0_1() { return cInterfaceInterfaceEStringParserRuleCall_6_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class CoarseGrainedBehaviorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CoarseGrainedBehavior");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCoarseGrainedBehaviorKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cDescribedSignatureKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cDescribedSignatureAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cDescribedSignatureSignatureCrossReference_2_1_0 = (CrossReference)cDescribedSignatureAssignment_2_1.eContents().get(0);
+		private final RuleCall cDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1 = (RuleCall)cDescribedSignatureSignatureCrossReference_2_1_0.eContents().get(1);
+		private final Keyword cDescribedEntityKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDescribedEntityAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0 = (CrossReference)cDescribedEntityAssignment_4.eContents().get(0);
+		private final RuleCall cDescribedEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_4_0_1 = (RuleCall)cDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0.eContents().get(1);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cInfluencingParameterKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cInfluencingParameterAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final RuleCall cInfluencingParameterInfluencingParameterParserRuleCall_5_2_0 = (RuleCall)cInfluencingParameterAssignment_5_2.eContents().get(0);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cInfluencingParameterAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final RuleCall cInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0 = (RuleCall)cInfluencingParameterAssignment_5_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cExternalCallFrequencyKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cExternalCallFrequencyAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_2_0 = (RuleCall)cExternalCallFrequencyAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cExternalCallFrequencyAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_3_1_0 = (RuleCall)cExternalCallFrequencyAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cResourceDemandSpecificationKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cResourceDemandSpecificationAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_2_0 = (RuleCall)cResourceDemandSpecificationAssignment_7_2.eContents().get(0);
+		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
+		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
+		private final Assignment cResourceDemandSpecificationAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
+		private final RuleCall cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_3_1_0 = (RuleCall)cResourceDemandSpecificationAssignment_7_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//CoarseGrainedBehavior returns servicebehavior::CoarseGrainedBehavior:
+		//	"CoarseGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])?
+		//	"describedEntity" describedEntity=[repository::InterfaceProvidingRequiringEntity|EString] ("influencingParameter" "{"
+		//	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+		//	("externalCallFrequency" "{" externalCallFrequency+=ExternalCallFrequency (","
+		//	externalCallFrequency+=ExternalCallFrequency)* "}")? ("resourceDemandSpecification" "{"
+		//	resourceDemandSpecification+=ResourceDemandSpecification (","
+		//	resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CoarseGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "describedEntity"
+		//describedEntity=[repository::InterfaceProvidingRequiringEntity|EString] ("influencingParameter" "{"
+		//influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+		//("externalCallFrequency" "{" externalCallFrequency+=ExternalCallFrequency (","
+		//externalCallFrequency+=ExternalCallFrequency)* "}")? ("resourceDemandSpecification" "{"
+		//resourceDemandSpecification+=ResourceDemandSpecification (","
+		//resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CoarseGrainedBehavior"
+		public Keyword getCoarseGrainedBehaviorKeyword_0() { return cCoarseGrainedBehaviorKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("describedSignature" describedSignature=[repository::Signature|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"describedSignature"
+		public Keyword getDescribedSignatureKeyword_2_0() { return cDescribedSignatureKeyword_2_0; }
+
+		//describedSignature=[repository::Signature|EString]
+		public Assignment getDescribedSignatureAssignment_2_1() { return cDescribedSignatureAssignment_2_1; }
+
+		//[repository::Signature|EString]
+		public CrossReference getDescribedSignatureSignatureCrossReference_2_1_0() { return cDescribedSignatureSignatureCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1() { return cDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1; }
+
+		//"describedEntity"
+		public Keyword getDescribedEntityKeyword_3() { return cDescribedEntityKeyword_3; }
+
+		//describedEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+		public Assignment getDescribedEntityAssignment_4() { return cDescribedEntityAssignment_4; }
+
+		//[repository::InterfaceProvidingRequiringEntity|EString]
+		public CrossReference getDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0() { return cDescribedEntityInterfaceProvidingRequiringEntityCrossReference_4_0; }
+
+		//EString
+		public RuleCall getDescribedEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_4_0_1() { return cDescribedEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_4_0_1; }
+
+		//("influencingParameter" "{" influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)*
+		//"}")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"influencingParameter"
+		public Keyword getInfluencingParameterKeyword_5_0() { return cInfluencingParameterKeyword_5_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+		//influencingParameter+=InfluencingParameter
+		public Assignment getInfluencingParameterAssignment_5_2() { return cInfluencingParameterAssignment_5_2; }
+
+		//InfluencingParameter
+		public RuleCall getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0() { return cInfluencingParameterInfluencingParameterParserRuleCall_5_2_0; }
+
+		//("," influencingParameter+=InfluencingParameter)*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//influencingParameter+=InfluencingParameter
+		public Assignment getInfluencingParameterAssignment_5_3_1() { return cInfluencingParameterAssignment_5_3_1; }
+
+		//InfluencingParameter
+		public RuleCall getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0() { return cInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
+
+		//("externalCallFrequency" "{" externalCallFrequency+=ExternalCallFrequency (","
+		//externalCallFrequency+=ExternalCallFrequency)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"externalCallFrequency"
+		public Keyword getExternalCallFrequencyKeyword_6_0() { return cExternalCallFrequencyKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//externalCallFrequency+=ExternalCallFrequency
+		public Assignment getExternalCallFrequencyAssignment_6_2() { return cExternalCallFrequencyAssignment_6_2; }
+
+		//ExternalCallFrequency
+		public RuleCall getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_2_0() { return cExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_2_0; }
+
+		//("," externalCallFrequency+=ExternalCallFrequency)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//externalCallFrequency+=ExternalCallFrequency
+		public Assignment getExternalCallFrequencyAssignment_6_3_1() { return cExternalCallFrequencyAssignment_6_3_1; }
+
+		//ExternalCallFrequency
+		public RuleCall getExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_3_1_0() { return cExternalCallFrequencyExternalCallFrequencyParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//("resourceDemandSpecification" "{" resourceDemandSpecification+=ResourceDemandSpecification (","
+		//resourceDemandSpecification+=ResourceDemandSpecification)* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"resourceDemandSpecification"
+		public Keyword getResourceDemandSpecificationKeyword_7_0() { return cResourceDemandSpecificationKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//resourceDemandSpecification+=ResourceDemandSpecification
+		public Assignment getResourceDemandSpecificationAssignment_7_2() { return cResourceDemandSpecificationAssignment_7_2; }
+
+		//ResourceDemandSpecification
+		public RuleCall getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_2_0() { return cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_2_0; }
+
+		//("," resourceDemandSpecification+=ResourceDemandSpecification)*
+		public Group getGroup_7_3() { return cGroup_7_3; }
+
+		//","
+		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
+
+		//resourceDemandSpecification+=ResourceDemandSpecification
+		public Assignment getResourceDemandSpecificationAssignment_7_3_1() { return cResourceDemandSpecificationAssignment_7_3_1; }
+
+		//ResourceDemandSpecification
+		public RuleCall getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_3_1_0() { return cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_7_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class BasicComponentElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BasicComponent");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBasicComponentKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cRelationshipKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cRelationshipAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_2_0 = (CrossReference)cRelationshipAssignment_5_2.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_2_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_2_0.eContents().get(1);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cRelationshipAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_3_1_0 = (CrossReference)cRelationshipAssignment_5_3_1.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_3_1_0.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cProvidedRolesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cProvidedRolesAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_2_0 = (RuleCall)cProvidedRolesAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cProvidedRolesAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0 = (RuleCall)cProvidedRolesAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cBlackBoxBehaviorKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cBlackBoxBehaviorAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_2.eContents().get(0);
+		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
+		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
+		private final Assignment cBlackBoxBehaviorAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
+		private final Keyword cRequiredRolesKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
+		private final Assignment cRequiredRolesAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_2_0 = (RuleCall)cRequiredRolesAssignment_8_2.eContents().get(0);
+		private final Group cGroup_8_3 = (Group)cGroup_8.eContents().get(3);
+		private final Keyword cCommaKeyword_8_3_0 = (Keyword)cGroup_8_3.eContents().get(0);
+		private final Assignment cRequiredRolesAssignment_8_3_1 = (Assignment)cGroup_8_3.eContents().get(1);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0 = (RuleCall)cRequiredRolesAssignment_8_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
+		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
+		private final Keyword cCoarseGrainedBehaviorKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_2.eContents().get(0);
+		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
+		private final Keyword cCommaKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
+		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
+		private final Keyword cPassiveResourcesKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
+		private final Assignment cPassiveResourcesAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
+		private final RuleCall cPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_2_0 = (RuleCall)cPassiveResourcesAssignment_10_2.eContents().get(0);
+		private final Group cGroup_10_3 = (Group)cGroup_10.eContents().get(3);
+		private final Keyword cCommaKeyword_10_3_0 = (Keyword)cGroup_10_3.eContents().get(0);
+		private final Assignment cPassiveResourcesAssignment_10_3_1 = (Assignment)cGroup_10_3.eContents().get(1);
+		private final RuleCall cPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_3_1_0 = (RuleCall)cPassiveResourcesAssignment_10_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_10_4 = (Keyword)cGroup_10.eContents().get(4);
+		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
+		private final Keyword cFineGrainedBehaviorKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
+		private final Assignment cFineGrainedBehaviorAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
+		private final RuleCall cFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_2_0 = (RuleCall)cFineGrainedBehaviorAssignment_11_2.eContents().get(0);
+		private final Group cGroup_11_3 = (Group)cGroup_11.eContents().get(3);
+		private final Keyword cCommaKeyword_11_3_0 = (Keyword)cGroup_11_3.eContents().get(0);
+		private final Assignment cFineGrainedBehaviorAssignment_11_3_1 = (Assignment)cGroup_11_3.eContents().get(1);
+		private final RuleCall cFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_3_1_0 = (RuleCall)cFineGrainedBehaviorAssignment_11_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_11_4 = (Keyword)cGroup_11.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
+		
+		//BasicComponent returns repository::BasicComponent:
+		//	"BasicComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("passiveResources" "{"
+		//	passiveResources+=PassiveResourceSpecification ("," passiveResources+=PassiveResourceSpecification)* "}")?
+		//	("fineGrainedBehavior" "{" fineGrainedBehavior+=FineGrainedBehavior ("," fineGrainedBehavior+=FineGrainedBehavior)*
+		//	"}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"BasicComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("passiveResources" "{"
+		//passiveResources+=PassiveResourceSpecification ("," passiveResources+=PassiveResourceSpecification)* "}")?
+		//("fineGrainedBehavior" "{" fineGrainedBehavior+=FineGrainedBehavior ("," fineGrainedBehavior+=FineGrainedBehavior)*
+		//"}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"BasicComponent"
+		public Keyword getBasicComponentKeyword_0() { return cBasicComponentKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"relationship"
+		public Keyword getRelationshipKeyword_5_0() { return cRelationshipKeyword_5_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_2() { return cRelationshipAssignment_5_2; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_2_0() { return cRelationshipRelationshipCrossReference_5_2_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_2_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_2_0_1; }
+
+		//("," relationship+=[Relationship|EString])*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_3_1() { return cRelationshipAssignment_5_3_1; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_3_1_0() { return cRelationshipRelationshipCrossReference_5_3_1_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5_4() { return cRightParenthesisKeyword_5_4; }
+
+		//("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"providedRoles"
+		public Keyword getProvidedRolesKeyword_6_0() { return cProvidedRolesKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_2() { return cProvidedRolesAssignment_6_2; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_2_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_2_0; }
+
+		//("," providedRoles+=ProvidedRole)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_3_1() { return cProvidedRolesAssignment_6_3_1; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"blackBoxBehavior"
+		public Keyword getBlackBoxBehaviorKeyword_7_0() { return cBlackBoxBehaviorKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_2() { return cBlackBoxBehaviorAssignment_7_2; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0; }
+
+		//("," blackBoxBehavior+=BlackBoxBehavior)*
+		public Group getGroup_7_3() { return cGroup_7_3; }
+
+		//","
+		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_3_1() { return cBlackBoxBehaviorAssignment_7_3_1; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+		//("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+		public Group getGroup_8() { return cGroup_8; }
+
+		//"requiredRoles"
+		public Keyword getRequiredRolesKeyword_8_0() { return cRequiredRolesKeyword_8_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_8_1() { return cLeftCurlyBracketKeyword_8_1; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_2() { return cRequiredRolesAssignment_8_2; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_2_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_2_0; }
+
+		//("," requiredRoles+=RequiredRole)*
+		public Group getGroup_8_3() { return cGroup_8_3; }
+
+		//","
+		public Keyword getCommaKeyword_8_3_0() { return cCommaKeyword_8_3_0; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_3_1() { return cRequiredRolesAssignment_8_3_1; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8_4() { return cRightCurlyBracketKeyword_8_4; }
+
+		//("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+		public Group getGroup_9() { return cGroup_9; }
+
+		//"coarseGrainedBehavior"
+		public Keyword getCoarseGrainedBehaviorKeyword_9_0() { return cCoarseGrainedBehaviorKeyword_9_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_2() { return cCoarseGrainedBehaviorAssignment_9_2; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0; }
+
+		//("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+		public Group getGroup_9_3() { return cGroup_9_3; }
+
+		//","
+		public Keyword getCommaKeyword_9_3_0() { return cCommaKeyword_9_3_0; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_3_1() { return cCoarseGrainedBehaviorAssignment_9_3_1; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9_4() { return cRightCurlyBracketKeyword_9_4; }
+
+		//("passiveResources" "{" passiveResources+=PassiveResourceSpecification (","
+		//passiveResources+=PassiveResourceSpecification)* "}")?
+		public Group getGroup_10() { return cGroup_10; }
+
+		//"passiveResources"
+		public Keyword getPassiveResourcesKeyword_10_0() { return cPassiveResourcesKeyword_10_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_10_1() { return cLeftCurlyBracketKeyword_10_1; }
+
+		//passiveResources+=PassiveResourceSpecification
+		public Assignment getPassiveResourcesAssignment_10_2() { return cPassiveResourcesAssignment_10_2; }
+
+		//PassiveResourceSpecification
+		public RuleCall getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_2_0() { return cPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_2_0; }
+
+		//("," passiveResources+=PassiveResourceSpecification)*
+		public Group getGroup_10_3() { return cGroup_10_3; }
+
+		//","
+		public Keyword getCommaKeyword_10_3_0() { return cCommaKeyword_10_3_0; }
+
+		//passiveResources+=PassiveResourceSpecification
+		public Assignment getPassiveResourcesAssignment_10_3_1() { return cPassiveResourcesAssignment_10_3_1; }
+
+		//PassiveResourceSpecification
+		public RuleCall getPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_3_1_0() { return cPassiveResourcesPassiveResourceSpecificationParserRuleCall_10_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_10_4() { return cRightCurlyBracketKeyword_10_4; }
+
+		//("fineGrainedBehavior" "{" fineGrainedBehavior+=FineGrainedBehavior ("," fineGrainedBehavior+=FineGrainedBehavior)*
+		//"}")?
+		public Group getGroup_11() { return cGroup_11; }
+
+		//"fineGrainedBehavior"
+		public Keyword getFineGrainedBehaviorKeyword_11_0() { return cFineGrainedBehaviorKeyword_11_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_11_1() { return cLeftCurlyBracketKeyword_11_1; }
+
+		//fineGrainedBehavior+=FineGrainedBehavior
+		public Assignment getFineGrainedBehaviorAssignment_11_2() { return cFineGrainedBehaviorAssignment_11_2; }
+
+		//FineGrainedBehavior
+		public RuleCall getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_2_0() { return cFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_2_0; }
+
+		//("," fineGrainedBehavior+=FineGrainedBehavior)*
+		public Group getGroup_11_3() { return cGroup_11_3; }
+
+		//","
+		public Keyword getCommaKeyword_11_3_0() { return cCommaKeyword_11_3_0; }
+
+		//fineGrainedBehavior+=FineGrainedBehavior
+		public Assignment getFineGrainedBehaviorAssignment_11_3_1() { return cFineGrainedBehaviorAssignment_11_3_1; }
+
+		//FineGrainedBehavior
+		public RuleCall getFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_3_1_0() { return cFineGrainedBehaviorFineGrainedBehaviorParserRuleCall_11_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_11_4() { return cRightCurlyBracketKeyword_11_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
+	}
+
+	public class CompositeComponentElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CompositeComponent");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCompositeComponentKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cRelationshipKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cRelationshipAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_2_0 = (CrossReference)cRelationshipAssignment_5_2.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_2_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_2_0.eContents().get(1);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cRelationshipAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_3_1_0 = (CrossReference)cRelationshipAssignment_5_3_1.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_3_1_0.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cProvidedRolesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cProvidedRolesAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_2_0 = (RuleCall)cProvidedRolesAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cProvidedRolesAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0 = (RuleCall)cProvidedRolesAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cBlackBoxBehaviorKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cBlackBoxBehaviorAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_2.eContents().get(0);
+		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
+		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
+		private final Assignment cBlackBoxBehaviorAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
+		private final Keyword cRequiredRolesKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
+		private final Assignment cRequiredRolesAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_2_0 = (RuleCall)cRequiredRolesAssignment_8_2.eContents().get(0);
+		private final Group cGroup_8_3 = (Group)cGroup_8.eContents().get(3);
+		private final Keyword cCommaKeyword_8_3_0 = (Keyword)cGroup_8_3.eContents().get(0);
+		private final Assignment cRequiredRolesAssignment_8_3_1 = (Assignment)cGroup_8_3.eContents().get(1);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0 = (RuleCall)cRequiredRolesAssignment_8_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
+		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
+		private final Keyword cCoarseGrainedBehaviorKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_2.eContents().get(0);
+		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
+		private final Keyword cCommaKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
+		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
+		private final Keyword cAssemblyContextsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
+		private final Assignment cAssemblyContextsAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
+		private final RuleCall cAssemblyContextsAssemblyContextParserRuleCall_10_2_0 = (RuleCall)cAssemblyContextsAssignment_10_2.eContents().get(0);
+		private final Group cGroup_10_3 = (Group)cGroup_10.eContents().get(3);
+		private final Keyword cCommaKeyword_10_3_0 = (Keyword)cGroup_10_3.eContents().get(0);
+		private final Assignment cAssemblyContextsAssignment_10_3_1 = (Assignment)cGroup_10_3.eContents().get(1);
+		private final RuleCall cAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0 = (RuleCall)cAssemblyContextsAssignment_10_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_10_4 = (Keyword)cGroup_10.eContents().get(4);
+		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
+		private final Keyword cAssemblyConnectorsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
+		private final Assignment cAssemblyConnectorsAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
+		private final RuleCall cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0 = (RuleCall)cAssemblyConnectorsAssignment_11_2.eContents().get(0);
+		private final Group cGroup_11_3 = (Group)cGroup_11.eContents().get(3);
+		private final Keyword cCommaKeyword_11_3_0 = (Keyword)cGroup_11_3.eContents().get(0);
+		private final Assignment cAssemblyConnectorsAssignment_11_3_1 = (Assignment)cGroup_11_3.eContents().get(1);
+		private final RuleCall cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0 = (RuleCall)cAssemblyConnectorsAssignment_11_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_11_4 = (Keyword)cGroup_11.eContents().get(4);
+		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
+		private final Keyword cProvidedDelegationConnectorsKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_12_1 = (Keyword)cGroup_12.eContents().get(1);
+		private final Assignment cProvidedDelegationConnectorsAssignment_12_2 = (Assignment)cGroup_12.eContents().get(2);
+		private final RuleCall cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0 = (RuleCall)cProvidedDelegationConnectorsAssignment_12_2.eContents().get(0);
+		private final Group cGroup_12_3 = (Group)cGroup_12.eContents().get(3);
+		private final Keyword cCommaKeyword_12_3_0 = (Keyword)cGroup_12_3.eContents().get(0);
+		private final Assignment cProvidedDelegationConnectorsAssignment_12_3_1 = (Assignment)cGroup_12_3.eContents().get(1);
+		private final RuleCall cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0 = (RuleCall)cProvidedDelegationConnectorsAssignment_12_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_12_4 = (Keyword)cGroup_12.eContents().get(4);
+		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
+		private final Keyword cRequiredDelegationConnectorsKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_13_1 = (Keyword)cGroup_13.eContents().get(1);
+		private final Assignment cRequiredDelegationConnectorsAssignment_13_2 = (Assignment)cGroup_13.eContents().get(2);
+		private final RuleCall cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0 = (RuleCall)cRequiredDelegationConnectorsAssignment_13_2.eContents().get(0);
+		private final Group cGroup_13_3 = (Group)cGroup_13.eContents().get(3);
+		private final Keyword cCommaKeyword_13_3_0 = (Keyword)cGroup_13_3.eContents().get(0);
+		private final Assignment cRequiredDelegationConnectorsAssignment_13_3_1 = (Assignment)cGroup_13_3.eContents().get(1);
+		private final RuleCall cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0 = (RuleCall)cRequiredDelegationConnectorsAssignment_13_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_13_4 = (Keyword)cGroup_13.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_14 = (Keyword)cGroup.eContents().get(14);
+		
+		//CompositeComponent returns repository::CompositeComponent:
+		//	"CompositeComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+		//	assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+		//	assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+		//	providedDelegationConnectors+=ProvidedDelegationConnector (","
+		//	providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+		//	requiredDelegationConnectors+=RequiredDelegationConnector (","
+		//	requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CompositeComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+		//assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+		//assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+		//providedDelegationConnectors+=ProvidedDelegationConnector (","
+		//providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+		//requiredDelegationConnectors+=RequiredDelegationConnector (","
+		//requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CompositeComponent"
+		public Keyword getCompositeComponentKeyword_0() { return cCompositeComponentKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"relationship"
+		public Keyword getRelationshipKeyword_5_0() { return cRelationshipKeyword_5_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_2() { return cRelationshipAssignment_5_2; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_2_0() { return cRelationshipRelationshipCrossReference_5_2_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_2_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_2_0_1; }
+
+		//("," relationship+=[Relationship|EString])*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_3_1() { return cRelationshipAssignment_5_3_1; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_3_1_0() { return cRelationshipRelationshipCrossReference_5_3_1_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5_4() { return cRightParenthesisKeyword_5_4; }
+
+		//("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"providedRoles"
+		public Keyword getProvidedRolesKeyword_6_0() { return cProvidedRolesKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_2() { return cProvidedRolesAssignment_6_2; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_2_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_2_0; }
+
+		//("," providedRoles+=ProvidedRole)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_3_1() { return cProvidedRolesAssignment_6_3_1; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"blackBoxBehavior"
+		public Keyword getBlackBoxBehaviorKeyword_7_0() { return cBlackBoxBehaviorKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_2() { return cBlackBoxBehaviorAssignment_7_2; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0; }
+
+		//("," blackBoxBehavior+=BlackBoxBehavior)*
+		public Group getGroup_7_3() { return cGroup_7_3; }
+
+		//","
+		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_3_1() { return cBlackBoxBehaviorAssignment_7_3_1; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+		//("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+		public Group getGroup_8() { return cGroup_8; }
+
+		//"requiredRoles"
+		public Keyword getRequiredRolesKeyword_8_0() { return cRequiredRolesKeyword_8_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_8_1() { return cLeftCurlyBracketKeyword_8_1; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_2() { return cRequiredRolesAssignment_8_2; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_2_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_2_0; }
+
+		//("," requiredRoles+=RequiredRole)*
+		public Group getGroup_8_3() { return cGroup_8_3; }
+
+		//","
+		public Keyword getCommaKeyword_8_3_0() { return cCommaKeyword_8_3_0; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_3_1() { return cRequiredRolesAssignment_8_3_1; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8_4() { return cRightCurlyBracketKeyword_8_4; }
+
+		//("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+		public Group getGroup_9() { return cGroup_9; }
+
+		//"coarseGrainedBehavior"
+		public Keyword getCoarseGrainedBehaviorKeyword_9_0() { return cCoarseGrainedBehaviorKeyword_9_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_2() { return cCoarseGrainedBehaviorAssignment_9_2; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0; }
+
+		//("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+		public Group getGroup_9_3() { return cGroup_9_3; }
+
+		//","
+		public Keyword getCommaKeyword_9_3_0() { return cCommaKeyword_9_3_0; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_3_1() { return cCoarseGrainedBehaviorAssignment_9_3_1; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9_4() { return cRightCurlyBracketKeyword_9_4; }
+
+		//("assemblyContexts" "{" assemblyContexts+=AssemblyContext ("," assemblyContexts+=AssemblyContext)* "}")?
+		public Group getGroup_10() { return cGroup_10; }
+
+		//"assemblyContexts"
+		public Keyword getAssemblyContextsKeyword_10_0() { return cAssemblyContextsKeyword_10_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_10_1() { return cLeftCurlyBracketKeyword_10_1; }
+
+		//assemblyContexts+=AssemblyContext
+		public Assignment getAssemblyContextsAssignment_10_2() { return cAssemblyContextsAssignment_10_2; }
+
+		//AssemblyContext
+		public RuleCall getAssemblyContextsAssemblyContextParserRuleCall_10_2_0() { return cAssemblyContextsAssemblyContextParserRuleCall_10_2_0; }
+
+		//("," assemblyContexts+=AssemblyContext)*
+		public Group getGroup_10_3() { return cGroup_10_3; }
+
+		//","
+		public Keyword getCommaKeyword_10_3_0() { return cCommaKeyword_10_3_0; }
+
+		//assemblyContexts+=AssemblyContext
+		public Assignment getAssemblyContextsAssignment_10_3_1() { return cAssemblyContextsAssignment_10_3_1; }
+
+		//AssemblyContext
+		public RuleCall getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0() { return cAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_10_4() { return cRightCurlyBracketKeyword_10_4; }
+
+		//("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector ("," assemblyConnectors+=AssemblyConnector)* "}")?
+		public Group getGroup_11() { return cGroup_11; }
+
+		//"assemblyConnectors"
+		public Keyword getAssemblyConnectorsKeyword_11_0() { return cAssemblyConnectorsKeyword_11_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_11_1() { return cLeftCurlyBracketKeyword_11_1; }
+
+		//assemblyConnectors+=AssemblyConnector
+		public Assignment getAssemblyConnectorsAssignment_11_2() { return cAssemblyConnectorsAssignment_11_2; }
+
+		//AssemblyConnector
+		public RuleCall getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0() { return cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0; }
+
+		//("," assemblyConnectors+=AssemblyConnector)*
+		public Group getGroup_11_3() { return cGroup_11_3; }
+
+		//","
+		public Keyword getCommaKeyword_11_3_0() { return cCommaKeyword_11_3_0; }
+
+		//assemblyConnectors+=AssemblyConnector
+		public Assignment getAssemblyConnectorsAssignment_11_3_1() { return cAssemblyConnectorsAssignment_11_3_1; }
+
+		//AssemblyConnector
+		public RuleCall getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0() { return cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_11_4() { return cRightCurlyBracketKeyword_11_4; }
+
+		//("providedDelegationConnectors" "{" providedDelegationConnectors+=ProvidedDelegationConnector (","
+		//providedDelegationConnectors+=ProvidedDelegationConnector)* "}")?
+		public Group getGroup_12() { return cGroup_12; }
+
+		//"providedDelegationConnectors"
+		public Keyword getProvidedDelegationConnectorsKeyword_12_0() { return cProvidedDelegationConnectorsKeyword_12_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_12_1() { return cLeftCurlyBracketKeyword_12_1; }
+
+		//providedDelegationConnectors+=ProvidedDelegationConnector
+		public Assignment getProvidedDelegationConnectorsAssignment_12_2() { return cProvidedDelegationConnectorsAssignment_12_2; }
+
+		//ProvidedDelegationConnector
+		public RuleCall getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0() { return cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0; }
+
+		//("," providedDelegationConnectors+=ProvidedDelegationConnector)*
+		public Group getGroup_12_3() { return cGroup_12_3; }
+
+		//","
+		public Keyword getCommaKeyword_12_3_0() { return cCommaKeyword_12_3_0; }
+
+		//providedDelegationConnectors+=ProvidedDelegationConnector
+		public Assignment getProvidedDelegationConnectorsAssignment_12_3_1() { return cProvidedDelegationConnectorsAssignment_12_3_1; }
+
+		//ProvidedDelegationConnector
+		public RuleCall getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0() { return cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_12_4() { return cRightCurlyBracketKeyword_12_4; }
+
+		//("requiredDelegationConnectors" "{" requiredDelegationConnectors+=RequiredDelegationConnector (","
+		//requiredDelegationConnectors+=RequiredDelegationConnector)* "}")?
+		public Group getGroup_13() { return cGroup_13; }
+
+		//"requiredDelegationConnectors"
+		public Keyword getRequiredDelegationConnectorsKeyword_13_0() { return cRequiredDelegationConnectorsKeyword_13_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_13_1() { return cLeftCurlyBracketKeyword_13_1; }
+
+		//requiredDelegationConnectors+=RequiredDelegationConnector
+		public Assignment getRequiredDelegationConnectorsAssignment_13_2() { return cRequiredDelegationConnectorsAssignment_13_2; }
+
+		//RequiredDelegationConnector
+		public RuleCall getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0() { return cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0; }
+
+		//("," requiredDelegationConnectors+=RequiredDelegationConnector)*
+		public Group getGroup_13_3() { return cGroup_13_3; }
+
+		//","
+		public Keyword getCommaKeyword_13_3_0() { return cCommaKeyword_13_3_0; }
+
+		//requiredDelegationConnectors+=RequiredDelegationConnector
+		public Assignment getRequiredDelegationConnectorsAssignment_13_3_1() { return cRequiredDelegationConnectorsAssignment_13_3_1; }
+
+		//RequiredDelegationConnector
+		public RuleCall getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0() { return cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_13_4() { return cRightCurlyBracketKeyword_13_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_14() { return cRightCurlyBracketKeyword_14; }
+	}
+
+	public class SubSystemElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SubSystem");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSubSystemKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cRelationshipKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cRelationshipAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_2_0 = (CrossReference)cRelationshipAssignment_5_2.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_2_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_2_0.eContents().get(1);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cRelationshipAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final CrossReference cRelationshipRelationshipCrossReference_5_3_1_0 = (CrossReference)cRelationshipAssignment_5_3_1.eContents().get(0);
+		private final RuleCall cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1 = (RuleCall)cRelationshipRelationshipCrossReference_5_3_1_0.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cProvidedRolesKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cProvidedRolesAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_2_0 = (RuleCall)cProvidedRolesAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cProvidedRolesAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0 = (RuleCall)cProvidedRolesAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cBlackBoxBehaviorKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cBlackBoxBehaviorAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_2.eContents().get(0);
+		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
+		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
+		private final Assignment cBlackBoxBehaviorAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
+		private final RuleCall cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0 = (RuleCall)cBlackBoxBehaviorAssignment_7_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
+		private final Keyword cRequiredRolesKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
+		private final Assignment cRequiredRolesAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_2_0 = (RuleCall)cRequiredRolesAssignment_8_2.eContents().get(0);
+		private final Group cGroup_8_3 = (Group)cGroup_8.eContents().get(3);
+		private final Keyword cCommaKeyword_8_3_0 = (Keyword)cGroup_8_3.eContents().get(0);
+		private final Assignment cRequiredRolesAssignment_8_3_1 = (Assignment)cGroup_8_3.eContents().get(1);
+		private final RuleCall cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0 = (RuleCall)cRequiredRolesAssignment_8_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
+		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
+		private final Keyword cCoarseGrainedBehaviorKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_2.eContents().get(0);
+		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
+		private final Keyword cCommaKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
+		private final Assignment cCoarseGrainedBehaviorAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
+		private final RuleCall cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0 = (RuleCall)cCoarseGrainedBehaviorAssignment_9_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
+		private final Group cGroup_10 = (Group)cGroup.eContents().get(10);
+		private final Keyword cAssemblyContextsKeyword_10_0 = (Keyword)cGroup_10.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_10_1 = (Keyword)cGroup_10.eContents().get(1);
+		private final Assignment cAssemblyContextsAssignment_10_2 = (Assignment)cGroup_10.eContents().get(2);
+		private final RuleCall cAssemblyContextsAssemblyContextParserRuleCall_10_2_0 = (RuleCall)cAssemblyContextsAssignment_10_2.eContents().get(0);
+		private final Group cGroup_10_3 = (Group)cGroup_10.eContents().get(3);
+		private final Keyword cCommaKeyword_10_3_0 = (Keyword)cGroup_10_3.eContents().get(0);
+		private final Assignment cAssemblyContextsAssignment_10_3_1 = (Assignment)cGroup_10_3.eContents().get(1);
+		private final RuleCall cAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0 = (RuleCall)cAssemblyContextsAssignment_10_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_10_4 = (Keyword)cGroup_10.eContents().get(4);
+		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
+		private final Keyword cAssemblyConnectorsKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_11_1 = (Keyword)cGroup_11.eContents().get(1);
+		private final Assignment cAssemblyConnectorsAssignment_11_2 = (Assignment)cGroup_11.eContents().get(2);
+		private final RuleCall cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0 = (RuleCall)cAssemblyConnectorsAssignment_11_2.eContents().get(0);
+		private final Group cGroup_11_3 = (Group)cGroup_11.eContents().get(3);
+		private final Keyword cCommaKeyword_11_3_0 = (Keyword)cGroup_11_3.eContents().get(0);
+		private final Assignment cAssemblyConnectorsAssignment_11_3_1 = (Assignment)cGroup_11_3.eContents().get(1);
+		private final RuleCall cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0 = (RuleCall)cAssemblyConnectorsAssignment_11_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_11_4 = (Keyword)cGroup_11.eContents().get(4);
+		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
+		private final Keyword cProvidedDelegationConnectorsKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_12_1 = (Keyword)cGroup_12.eContents().get(1);
+		private final Assignment cProvidedDelegationConnectorsAssignment_12_2 = (Assignment)cGroup_12.eContents().get(2);
+		private final RuleCall cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0 = (RuleCall)cProvidedDelegationConnectorsAssignment_12_2.eContents().get(0);
+		private final Group cGroup_12_3 = (Group)cGroup_12.eContents().get(3);
+		private final Keyword cCommaKeyword_12_3_0 = (Keyword)cGroup_12_3.eContents().get(0);
+		private final Assignment cProvidedDelegationConnectorsAssignment_12_3_1 = (Assignment)cGroup_12_3.eContents().get(1);
+		private final RuleCall cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0 = (RuleCall)cProvidedDelegationConnectorsAssignment_12_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_12_4 = (Keyword)cGroup_12.eContents().get(4);
+		private final Group cGroup_13 = (Group)cGroup.eContents().get(13);
+		private final Keyword cRequiredDelegationConnectorsKeyword_13_0 = (Keyword)cGroup_13.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_13_1 = (Keyword)cGroup_13.eContents().get(1);
+		private final Assignment cRequiredDelegationConnectorsAssignment_13_2 = (Assignment)cGroup_13.eContents().get(2);
+		private final RuleCall cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0 = (RuleCall)cRequiredDelegationConnectorsAssignment_13_2.eContents().get(0);
+		private final Group cGroup_13_3 = (Group)cGroup_13.eContents().get(3);
+		private final Keyword cCommaKeyword_13_3_0 = (Keyword)cGroup_13_3.eContents().get(0);
+		private final Assignment cRequiredDelegationConnectorsAssignment_13_3_1 = (Assignment)cGroup_13_3.eContents().get(1);
+		private final RuleCall cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0 = (RuleCall)cRequiredDelegationConnectorsAssignment_13_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_13_4 = (Keyword)cGroup_13.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_14 = (Keyword)cGroup.eContents().get(14);
+		
+		//SubSystem returns repository::SubSystem:
+		//	"SubSystem" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+		//	assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+		//	assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+		//	providedDelegationConnectors+=ProvidedDelegationConnector (","
+		//	providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+		//	requiredDelegationConnectors+=RequiredDelegationConnector (","
+		//	requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"SubSystem" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+		//relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+		//providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+		//blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+		//requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+		//assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+		//assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+		//providedDelegationConnectors+=ProvidedDelegationConnector (","
+		//providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+		//requiredDelegationConnectors+=RequiredDelegationConnector (","
+		//requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"SubSystem"
+		public Keyword getSubSystemKeyword_0() { return cSubSystemKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//("relationship" "(" relationship+=[Relationship|EString] ("," relationship+=[Relationship|EString])* ")")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"relationship"
+		public Keyword getRelationshipKeyword_5_0() { return cRelationshipKeyword_5_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_5_1() { return cLeftParenthesisKeyword_5_1; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_2() { return cRelationshipAssignment_5_2; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_2_0() { return cRelationshipRelationshipCrossReference_5_2_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_2_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_2_0_1; }
+
+		//("," relationship+=[Relationship|EString])*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//relationship+=[Relationship|EString]
+		public Assignment getRelationshipAssignment_5_3_1() { return cRelationshipAssignment_5_3_1; }
+
+		//[Relationship|EString]
+		public CrossReference getRelationshipRelationshipCrossReference_5_3_1_0() { return cRelationshipRelationshipCrossReference_5_3_1_0; }
+
+		//EString
+		public RuleCall getRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1() { return cRelationshipRelationshipEStringParserRuleCall_5_3_1_0_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5_4() { return cRightParenthesisKeyword_5_4; }
+
+		//("providedRoles" "{" providedRoles+=ProvidedRole ("," providedRoles+=ProvidedRole)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"providedRoles"
+		public Keyword getProvidedRolesKeyword_6_0() { return cProvidedRolesKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_2() { return cProvidedRolesAssignment_6_2; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_2_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_2_0; }
+
+		//("," providedRoles+=ProvidedRole)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//providedRoles+=ProvidedRole
+		public Assignment getProvidedRolesAssignment_6_3_1() { return cProvidedRolesAssignment_6_3_1; }
+
+		//ProvidedRole
+		public RuleCall getProvidedRolesProvidedRoleParserRuleCall_6_3_1_0() { return cProvidedRolesProvidedRoleParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior ("," blackBoxBehavior+=BlackBoxBehavior)* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"blackBoxBehavior"
+		public Keyword getBlackBoxBehaviorKeyword_7_0() { return cBlackBoxBehaviorKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_2() { return cBlackBoxBehaviorAssignment_7_2; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_2_0; }
+
+		//("," blackBoxBehavior+=BlackBoxBehavior)*
+		public Group getGroup_7_3() { return cGroup_7_3; }
+
+		//","
+		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
+
+		//blackBoxBehavior+=BlackBoxBehavior
+		public Assignment getBlackBoxBehaviorAssignment_7_3_1() { return cBlackBoxBehaviorAssignment_7_3_1; }
+
+		//BlackBoxBehavior
+		public RuleCall getBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0() { return cBlackBoxBehaviorBlackBoxBehaviorParserRuleCall_7_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+		//("requiredRoles" "{" requiredRoles+=RequiredRole ("," requiredRoles+=RequiredRole)* "}")?
+		public Group getGroup_8() { return cGroup_8; }
+
+		//"requiredRoles"
+		public Keyword getRequiredRolesKeyword_8_0() { return cRequiredRolesKeyword_8_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_8_1() { return cLeftCurlyBracketKeyword_8_1; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_2() { return cRequiredRolesAssignment_8_2; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_2_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_2_0; }
+
+		//("," requiredRoles+=RequiredRole)*
+		public Group getGroup_8_3() { return cGroup_8_3; }
+
+		//","
+		public Keyword getCommaKeyword_8_3_0() { return cCommaKeyword_8_3_0; }
+
+		//requiredRoles+=RequiredRole
+		public Assignment getRequiredRolesAssignment_8_3_1() { return cRequiredRolesAssignment_8_3_1; }
+
+		//RequiredRole
+		public RuleCall getRequiredRolesRequiredRoleParserRuleCall_8_3_1_0() { return cRequiredRolesRequiredRoleParserRuleCall_8_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8_4() { return cRightCurlyBracketKeyword_8_4; }
+
+		//("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+		//coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")?
+		public Group getGroup_9() { return cGroup_9; }
+
+		//"coarseGrainedBehavior"
+		public Keyword getCoarseGrainedBehaviorKeyword_9_0() { return cCoarseGrainedBehaviorKeyword_9_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_2() { return cCoarseGrainedBehaviorAssignment_9_2; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_2_0; }
+
+		//("," coarseGrainedBehavior+=CoarseGrainedBehavior)*
+		public Group getGroup_9_3() { return cGroup_9_3; }
+
+		//","
+		public Keyword getCommaKeyword_9_3_0() { return cCommaKeyword_9_3_0; }
+
+		//coarseGrainedBehavior+=CoarseGrainedBehavior
+		public Assignment getCoarseGrainedBehaviorAssignment_9_3_1() { return cCoarseGrainedBehaviorAssignment_9_3_1; }
+
+		//CoarseGrainedBehavior
+		public RuleCall getCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0() { return cCoarseGrainedBehaviorCoarseGrainedBehaviorParserRuleCall_9_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9_4() { return cRightCurlyBracketKeyword_9_4; }
+
+		//("assemblyContexts" "{" assemblyContexts+=AssemblyContext ("," assemblyContexts+=AssemblyContext)* "}")?
+		public Group getGroup_10() { return cGroup_10; }
+
+		//"assemblyContexts"
+		public Keyword getAssemblyContextsKeyword_10_0() { return cAssemblyContextsKeyword_10_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_10_1() { return cLeftCurlyBracketKeyword_10_1; }
+
+		//assemblyContexts+=AssemblyContext
+		public Assignment getAssemblyContextsAssignment_10_2() { return cAssemblyContextsAssignment_10_2; }
+
+		//AssemblyContext
+		public RuleCall getAssemblyContextsAssemblyContextParserRuleCall_10_2_0() { return cAssemblyContextsAssemblyContextParserRuleCall_10_2_0; }
+
+		//("," assemblyContexts+=AssemblyContext)*
+		public Group getGroup_10_3() { return cGroup_10_3; }
+
+		//","
+		public Keyword getCommaKeyword_10_3_0() { return cCommaKeyword_10_3_0; }
+
+		//assemblyContexts+=AssemblyContext
+		public Assignment getAssemblyContextsAssignment_10_3_1() { return cAssemblyContextsAssignment_10_3_1; }
+
+		//AssemblyContext
+		public RuleCall getAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0() { return cAssemblyContextsAssemblyContextParserRuleCall_10_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_10_4() { return cRightCurlyBracketKeyword_10_4; }
+
+		//("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector ("," assemblyConnectors+=AssemblyConnector)* "}")?
+		public Group getGroup_11() { return cGroup_11; }
+
+		//"assemblyConnectors"
+		public Keyword getAssemblyConnectorsKeyword_11_0() { return cAssemblyConnectorsKeyword_11_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_11_1() { return cLeftCurlyBracketKeyword_11_1; }
+
+		//assemblyConnectors+=AssemblyConnector
+		public Assignment getAssemblyConnectorsAssignment_11_2() { return cAssemblyConnectorsAssignment_11_2; }
+
+		//AssemblyConnector
+		public RuleCall getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0() { return cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_2_0; }
+
+		//("," assemblyConnectors+=AssemblyConnector)*
+		public Group getGroup_11_3() { return cGroup_11_3; }
+
+		//","
+		public Keyword getCommaKeyword_11_3_0() { return cCommaKeyword_11_3_0; }
+
+		//assemblyConnectors+=AssemblyConnector
+		public Assignment getAssemblyConnectorsAssignment_11_3_1() { return cAssemblyConnectorsAssignment_11_3_1; }
+
+		//AssemblyConnector
+		public RuleCall getAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0() { return cAssemblyConnectorsAssemblyConnectorParserRuleCall_11_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_11_4() { return cRightCurlyBracketKeyword_11_4; }
+
+		//("providedDelegationConnectors" "{" providedDelegationConnectors+=ProvidedDelegationConnector (","
+		//providedDelegationConnectors+=ProvidedDelegationConnector)* "}")?
+		public Group getGroup_12() { return cGroup_12; }
+
+		//"providedDelegationConnectors"
+		public Keyword getProvidedDelegationConnectorsKeyword_12_0() { return cProvidedDelegationConnectorsKeyword_12_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_12_1() { return cLeftCurlyBracketKeyword_12_1; }
+
+		//providedDelegationConnectors+=ProvidedDelegationConnector
+		public Assignment getProvidedDelegationConnectorsAssignment_12_2() { return cProvidedDelegationConnectorsAssignment_12_2; }
+
+		//ProvidedDelegationConnector
+		public RuleCall getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0() { return cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_2_0; }
+
+		//("," providedDelegationConnectors+=ProvidedDelegationConnector)*
+		public Group getGroup_12_3() { return cGroup_12_3; }
+
+		//","
+		public Keyword getCommaKeyword_12_3_0() { return cCommaKeyword_12_3_0; }
+
+		//providedDelegationConnectors+=ProvidedDelegationConnector
+		public Assignment getProvidedDelegationConnectorsAssignment_12_3_1() { return cProvidedDelegationConnectorsAssignment_12_3_1; }
+
+		//ProvidedDelegationConnector
+		public RuleCall getProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0() { return cProvidedDelegationConnectorsProvidedDelegationConnectorParserRuleCall_12_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_12_4() { return cRightCurlyBracketKeyword_12_4; }
+
+		//("requiredDelegationConnectors" "{" requiredDelegationConnectors+=RequiredDelegationConnector (","
+		//requiredDelegationConnectors+=RequiredDelegationConnector)* "}")?
+		public Group getGroup_13() { return cGroup_13; }
+
+		//"requiredDelegationConnectors"
+		public Keyword getRequiredDelegationConnectorsKeyword_13_0() { return cRequiredDelegationConnectorsKeyword_13_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_13_1() { return cLeftCurlyBracketKeyword_13_1; }
+
+		//requiredDelegationConnectors+=RequiredDelegationConnector
+		public Assignment getRequiredDelegationConnectorsAssignment_13_2() { return cRequiredDelegationConnectorsAssignment_13_2; }
+
+		//RequiredDelegationConnector
+		public RuleCall getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0() { return cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_2_0; }
+
+		//("," requiredDelegationConnectors+=RequiredDelegationConnector)*
+		public Group getGroup_13_3() { return cGroup_13_3; }
+
+		//","
+		public Keyword getCommaKeyword_13_3_0() { return cCommaKeyword_13_3_0; }
+
+		//requiredDelegationConnectors+=RequiredDelegationConnector
+		public Assignment getRequiredDelegationConnectorsAssignment_13_3_1() { return cRequiredDelegationConnectorsAssignment_13_3_1; }
+
+		//RequiredDelegationConnector
+		public RuleCall getRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0() { return cRequiredDelegationConnectorsRequiredDelegationConnectorParserRuleCall_13_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_13_4() { return cRightCurlyBracketKeyword_13_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_14() { return cRightCurlyBracketKeyword_14; }
+	}
+
+	public class InfluencingParameter_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InfluencingParameter_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cInfluencingParameterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameEStringParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cDescriptionKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDescriptionAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cDescriptionEStringParserRuleCall_4_0 = (RuleCall)cDescriptionAssignment_4.eContents().get(0);
+		private final Keyword cBehaviorKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cBehaviorAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cBehaviorServiceBehaviorAbstractionCrossReference_6_0 = (CrossReference)cBehaviorAssignment_6.eContents().get(0);
+		private final RuleCall cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_6_0_1 = (RuleCall)cBehaviorServiceBehaviorAbstractionCrossReference_6_0.eContents().get(1);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cScopeKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cScopeAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cScopeScopeParserRuleCall_7_2_0 = (RuleCall)cScopeAssignment_7_2.eContents().get(0);
+		private final Group cGroup_7_3 = (Group)cGroup_7.eContents().get(3);
+		private final Keyword cCommaKeyword_7_3_0 = (Keyword)cGroup_7_3.eContents().get(0);
+		private final Assignment cScopeAssignment_7_3_1 = (Assignment)cGroup_7_3.eContents().get(1);
+		private final RuleCall cScopeScopeParserRuleCall_7_3_1_0 = (RuleCall)cScopeAssignment_7_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_4 = (Keyword)cGroup_7.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//InfluencingParameter_Impl returns InfluencingParameter:
+		//	"InfluencingParameter" name=EString "{" "description" description=EString "behavior"
+		//	behavior=[servicebehavior::ServiceBehaviorAbstraction|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+		//	"}";
+		public ParserRule getRule() { return rule; }
+
+		//"InfluencingParameter" name=EString "{" "description" description=EString "behavior"
+		//behavior=[servicebehavior::ServiceBehaviorAbstraction|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"InfluencingParameter"
+		public Keyword getInfluencingParameterKeyword_0() { return cInfluencingParameterKeyword_0; }
+
+		//name=EString
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_1_0() { return cNameEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"description"
+		public Keyword getDescriptionKeyword_3() { return cDescriptionKeyword_3; }
+
+		//description=EString
+		public Assignment getDescriptionAssignment_4() { return cDescriptionAssignment_4; }
+
+		//EString
+		public RuleCall getDescriptionEStringParserRuleCall_4_0() { return cDescriptionEStringParserRuleCall_4_0; }
+
+		//"behavior"
+		public Keyword getBehaviorKeyword_5() { return cBehaviorKeyword_5; }
+
+		//behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public Assignment getBehaviorAssignment_6() { return cBehaviorAssignment_6; }
+
+		//[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public CrossReference getBehaviorServiceBehaviorAbstractionCrossReference_6_0() { return cBehaviorServiceBehaviorAbstractionCrossReference_6_0; }
+
+		//EString
+		public RuleCall getBehaviorServiceBehaviorAbstractionEStringParserRuleCall_6_0_1() { return cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_6_0_1; }
+
+		//("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"scope"
+		public Keyword getScopeKeyword_7_0() { return cScopeKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_7_2() { return cScopeAssignment_7_2; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_7_2_0() { return cScopeScopeParserRuleCall_7_2_0; }
+
+		//("," scope+=Scope)*
+		public Group getGroup_7_3() { return cGroup_7_3; }
+
+		//","
+		public Keyword getCommaKeyword_7_3_0() { return cCommaKeyword_7_3_0; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_7_3_1() { return cScopeAssignment_7_3_1; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_7_3_1_0() { return cScopeScopeParserRuleCall_7_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_4() { return cRightCurlyBracketKeyword_7_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class ResponseTimeSpecificationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ResponseTimeSpecification");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cResponseTimeSpecificationAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cResponseTimeSpecificationKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//ResponseTimeSpecification returns servicebehavior::ResponseTimeSpecification:
+		//	{servicebehavior::ResponseTimeSpecification} "ResponseTimeSpecification";
+		public ParserRule getRule() { return rule; }
+
+		//{servicebehavior::ResponseTimeSpecification} "ResponseTimeSpecification"
+		public Group getGroup() { return cGroup; }
+
+		//{servicebehavior::ResponseTimeSpecification}
+		public Action getResponseTimeSpecificationAction_0() { return cResponseTimeSpecificationAction_0; }
+
+		//"ResponseTimeSpecification"
+		public Keyword getResponseTimeSpecificationKeyword_1() { return cResponseTimeSpecificationKeyword_1; }
+	}
+
+	public class ScopeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Scope");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cScopeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cInterfaceProvidingRequiringEntityKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cInterfaceProvidingRequiringEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0 = (CrossReference)cInterfaceProvidingRequiringEntityAssignment_3.eContents().get(0);
+		private final RuleCall cInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1 = (RuleCall)cInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//Scope:
+		//	"Scope" "{" "interfaceProvidingRequiringEntity"
+		//	interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Scope" "{" "interfaceProvidingRequiringEntity"
+		//interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Scope"
+		public Keyword getScopeKeyword_0() { return cScopeKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"interfaceProvidingRequiringEntity"
+		public Keyword getInterfaceProvidingRequiringEntityKeyword_2() { return cInterfaceProvidingRequiringEntityKeyword_2; }
+
+		//interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+		public Assignment getInterfaceProvidingRequiringEntityAssignment_3() { return cInterfaceProvidingRequiringEntityAssignment_3; }
+
+		//[repository::InterfaceProvidingRequiringEntity|EString]
+		public CrossReference getInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0() { return cInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityCrossReference_3_0; }
+
+		//EString
+		public RuleCall getInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1() { return cInterfaceProvidingRequiringEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class ServiceInputParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ServiceInputParameter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cServiceInputParameterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameEStringParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cDescriptionKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDescriptionAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cDescriptionEStringParserRuleCall_4_0 = (RuleCall)cDescriptionAssignment_4.eContents().get(0);
+		private final Keyword cCharacterizationKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cCharacterizationAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cCharacterizationCharacterizationTypeEnumRuleCall_6_0 = (RuleCall)cCharacterizationAssignment_6.eContents().get(0);
+		private final Keyword cBehaviorKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cBehaviorAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final CrossReference cBehaviorServiceBehaviorAbstractionCrossReference_8_0 = (CrossReference)cBehaviorAssignment_8.eContents().get(0);
+		private final RuleCall cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1 = (RuleCall)cBehaviorServiceBehaviorAbstractionCrossReference_8_0.eContents().get(1);
+		private final Keyword cSignatureKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Assignment cSignatureAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final CrossReference cSignatureSignatureCrossReference_10_0 = (CrossReference)cSignatureAssignment_10.eContents().get(0);
+		private final RuleCall cSignatureSignatureEStringParserRuleCall_10_0_1 = (RuleCall)cSignatureSignatureCrossReference_10_0.eContents().get(1);
+		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
+		private final Keyword cParameterKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
+		private final Assignment cParameterAssignment_11_1 = (Assignment)cGroup_11.eContents().get(1);
+		private final CrossReference cParameterParameterCrossReference_11_1_0 = (CrossReference)cParameterAssignment_11_1.eContents().get(0);
+		private final RuleCall cParameterParameterEStringParserRuleCall_11_1_0_1 = (RuleCall)cParameterParameterCrossReference_11_1_0.eContents().get(1);
+		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
+		private final Keyword cReturnTypeKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
+		private final Assignment cReturnTypeAssignment_12_1 = (Assignment)cGroup_12.eContents().get(1);
+		private final CrossReference cReturnTypeDataTypeCrossReference_12_1_0 = (CrossReference)cReturnTypeAssignment_12_1.eContents().get(0);
+		private final RuleCall cReturnTypeDataTypeEStringParserRuleCall_12_1_0_1 = (RuleCall)cReturnTypeDataTypeCrossReference_12_1_0.eContents().get(1);
+		private final Keyword cProvidedRoleKeyword_13 = (Keyword)cGroup.eContents().get(13);
+		private final Assignment cProvidedRoleAssignment_14 = (Assignment)cGroup.eContents().get(14);
+		private final CrossReference cProvidedRoleProvidedRoleCrossReference_14_0 = (CrossReference)cProvidedRoleAssignment_14.eContents().get(0);
+		private final RuleCall cProvidedRoleProvidedRoleEStringParserRuleCall_14_0_1 = (RuleCall)cProvidedRoleProvidedRoleCrossReference_14_0.eContents().get(1);
+		private final Group cGroup_15 = (Group)cGroup.eContents().get(15);
+		private final Keyword cScopeKeyword_15_0 = (Keyword)cGroup_15.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_15_1 = (Keyword)cGroup_15.eContents().get(1);
+		private final Assignment cScopeAssignment_15_2 = (Assignment)cGroup_15.eContents().get(2);
+		private final RuleCall cScopeScopeParserRuleCall_15_2_0 = (RuleCall)cScopeAssignment_15_2.eContents().get(0);
+		private final Group cGroup_15_3 = (Group)cGroup_15.eContents().get(3);
+		private final Keyword cCommaKeyword_15_3_0 = (Keyword)cGroup_15_3.eContents().get(0);
+		private final Assignment cScopeAssignment_15_3_1 = (Assignment)cGroup_15_3.eContents().get(1);
+		private final RuleCall cScopeScopeParserRuleCall_15_3_1_0 = (RuleCall)cScopeAssignment_15_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_15_4 = (Keyword)cGroup_15.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
+		
+		//ServiceInputParameter:
+		//	"ServiceInputParameter" name=EString "{" "description" description=EString "characterization"
+		//	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		//	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+		//	("returnType" returnType=[repository::DataType|EString])? "providedRole"
+		//	providedRole=[repository::ProvidedRole|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ServiceInputParameter" name=EString "{" "description" description=EString "characterization"
+		//characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		//"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+		//("returnType" returnType=[repository::DataType|EString])? "providedRole"
+		//providedRole=[repository::ProvidedRole|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ServiceInputParameter"
+		public Keyword getServiceInputParameterKeyword_0() { return cServiceInputParameterKeyword_0; }
+
+		//name=EString
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_1_0() { return cNameEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"description"
+		public Keyword getDescriptionKeyword_3() { return cDescriptionKeyword_3; }
+
+		//description=EString
+		public Assignment getDescriptionAssignment_4() { return cDescriptionAssignment_4; }
+
+		//EString
+		public RuleCall getDescriptionEStringParserRuleCall_4_0() { return cDescriptionEStringParserRuleCall_4_0; }
+
+		//"characterization"
+		public Keyword getCharacterizationKeyword_5() { return cCharacterizationKeyword_5; }
+
+		//characterization=CharacterizationType
+		public Assignment getCharacterizationAssignment_6() { return cCharacterizationAssignment_6; }
+
+		//CharacterizationType
+		public RuleCall getCharacterizationCharacterizationTypeEnumRuleCall_6_0() { return cCharacterizationCharacterizationTypeEnumRuleCall_6_0; }
+
+		//"behavior"
+		public Keyword getBehaviorKeyword_7() { return cBehaviorKeyword_7; }
+
+		//behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public Assignment getBehaviorAssignment_8() { return cBehaviorAssignment_8; }
+
+		//[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public CrossReference getBehaviorServiceBehaviorAbstractionCrossReference_8_0() { return cBehaviorServiceBehaviorAbstractionCrossReference_8_0; }
+
+		//EString
+		public RuleCall getBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1() { return cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1; }
+
+		//"signature"
+		public Keyword getSignatureKeyword_9() { return cSignatureKeyword_9; }
+
+		//signature=[repository::Signature|EString]
+		public Assignment getSignatureAssignment_10() { return cSignatureAssignment_10; }
+
+		//[repository::Signature|EString]
+		public CrossReference getSignatureSignatureCrossReference_10_0() { return cSignatureSignatureCrossReference_10_0; }
+
+		//EString
+		public RuleCall getSignatureSignatureEStringParserRuleCall_10_0_1() { return cSignatureSignatureEStringParserRuleCall_10_0_1; }
+
+		//("parameter" parameter=[repository::Parameter|EString])?
+		public Group getGroup_11() { return cGroup_11; }
+
+		//"parameter"
+		public Keyword getParameterKeyword_11_0() { return cParameterKeyword_11_0; }
+
+		//parameter=[repository::Parameter|EString]
+		public Assignment getParameterAssignment_11_1() { return cParameterAssignment_11_1; }
+
+		//[repository::Parameter|EString]
+		public CrossReference getParameterParameterCrossReference_11_1_0() { return cParameterParameterCrossReference_11_1_0; }
+
+		//EString
+		public RuleCall getParameterParameterEStringParserRuleCall_11_1_0_1() { return cParameterParameterEStringParserRuleCall_11_1_0_1; }
+
+		//("returnType" returnType=[repository::DataType|EString])?
+		public Group getGroup_12() { return cGroup_12; }
+
+		//"returnType"
+		public Keyword getReturnTypeKeyword_12_0() { return cReturnTypeKeyword_12_0; }
+
+		//returnType=[repository::DataType|EString]
+		public Assignment getReturnTypeAssignment_12_1() { return cReturnTypeAssignment_12_1; }
+
+		//[repository::DataType|EString]
+		public CrossReference getReturnTypeDataTypeCrossReference_12_1_0() { return cReturnTypeDataTypeCrossReference_12_1_0; }
+
+		//EString
+		public RuleCall getReturnTypeDataTypeEStringParserRuleCall_12_1_0_1() { return cReturnTypeDataTypeEStringParserRuleCall_12_1_0_1; }
+
+		//"providedRole"
+		public Keyword getProvidedRoleKeyword_13() { return cProvidedRoleKeyword_13; }
+
+		//providedRole=[repository::ProvidedRole|EString]
+		public Assignment getProvidedRoleAssignment_14() { return cProvidedRoleAssignment_14; }
+
+		//[repository::ProvidedRole|EString]
+		public CrossReference getProvidedRoleProvidedRoleCrossReference_14_0() { return cProvidedRoleProvidedRoleCrossReference_14_0; }
+
+		//EString
+		public RuleCall getProvidedRoleProvidedRoleEStringParserRuleCall_14_0_1() { return cProvidedRoleProvidedRoleEStringParserRuleCall_14_0_1; }
+
+		//("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+		public Group getGroup_15() { return cGroup_15; }
+
+		//"scope"
+		public Keyword getScopeKeyword_15_0() { return cScopeKeyword_15_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_15_1() { return cLeftCurlyBracketKeyword_15_1; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_15_2() { return cScopeAssignment_15_2; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_15_2_0() { return cScopeScopeParserRuleCall_15_2_0; }
+
+		//("," scope+=Scope)*
+		public Group getGroup_15_3() { return cGroup_15_3; }
+
+		//","
+		public Keyword getCommaKeyword_15_3_0() { return cCommaKeyword_15_3_0; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_15_3_1() { return cScopeAssignment_15_3_1; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_15_3_1_0() { return cScopeScopeParserRuleCall_15_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_15_4() { return cRightCurlyBracketKeyword_15_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
+	}
+
+	public class ExternalCallReturnParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalCallReturnParameter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cExternalCallReturnParameterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameEStringParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cDescriptionKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDescriptionAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cDescriptionEStringParserRuleCall_4_0 = (RuleCall)cDescriptionAssignment_4.eContents().get(0);
+		private final Keyword cCharacterizationKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cCharacterizationAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cCharacterizationCharacterizationTypeEnumRuleCall_6_0 = (RuleCall)cCharacterizationAssignment_6.eContents().get(0);
+		private final Keyword cBehaviorKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cBehaviorAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final CrossReference cBehaviorServiceBehaviorAbstractionCrossReference_8_0 = (CrossReference)cBehaviorAssignment_8.eContents().get(0);
+		private final RuleCall cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1 = (RuleCall)cBehaviorServiceBehaviorAbstractionCrossReference_8_0.eContents().get(1);
+		private final Keyword cSignatureKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Assignment cSignatureAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final CrossReference cSignatureSignatureCrossReference_10_0 = (CrossReference)cSignatureAssignment_10.eContents().get(0);
+		private final RuleCall cSignatureSignatureEStringParserRuleCall_10_0_1 = (RuleCall)cSignatureSignatureCrossReference_10_0.eContents().get(1);
+		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
+		private final Keyword cParameterKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
+		private final Assignment cParameterAssignment_11_1 = (Assignment)cGroup_11.eContents().get(1);
+		private final CrossReference cParameterParameterCrossReference_11_1_0 = (CrossReference)cParameterAssignment_11_1.eContents().get(0);
+		private final RuleCall cParameterParameterEStringParserRuleCall_11_1_0_1 = (RuleCall)cParameterParameterCrossReference_11_1_0.eContents().get(1);
+		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
+		private final Keyword cReturnTypeKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
+		private final Assignment cReturnTypeAssignment_12_1 = (Assignment)cGroup_12.eContents().get(1);
+		private final CrossReference cReturnTypeDataTypeCrossReference_12_1_0 = (CrossReference)cReturnTypeAssignment_12_1.eContents().get(0);
+		private final RuleCall cReturnTypeDataTypeEStringParserRuleCall_12_1_0_1 = (RuleCall)cReturnTypeDataTypeCrossReference_12_1_0.eContents().get(1);
+		private final Keyword cExternalCallKeyword_13 = (Keyword)cGroup.eContents().get(13);
+		private final Assignment cExternalCallAssignment_14 = (Assignment)cGroup.eContents().get(14);
+		private final CrossReference cExternalCallExternalCallCrossReference_14_0 = (CrossReference)cExternalCallAssignment_14.eContents().get(0);
+		private final RuleCall cExternalCallExternalCallEStringParserRuleCall_14_0_1 = (RuleCall)cExternalCallExternalCallCrossReference_14_0.eContents().get(1);
+		private final Group cGroup_15 = (Group)cGroup.eContents().get(15);
+		private final Keyword cScopeKeyword_15_0 = (Keyword)cGroup_15.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_15_1 = (Keyword)cGroup_15.eContents().get(1);
+		private final Assignment cScopeAssignment_15_2 = (Assignment)cGroup_15.eContents().get(2);
+		private final RuleCall cScopeScopeParserRuleCall_15_2_0 = (RuleCall)cScopeAssignment_15_2.eContents().get(0);
+		private final Group cGroup_15_3 = (Group)cGroup_15.eContents().get(3);
+		private final Keyword cCommaKeyword_15_3_0 = (Keyword)cGroup_15_3.eContents().get(0);
+		private final Assignment cScopeAssignment_15_3_1 = (Assignment)cGroup_15_3.eContents().get(1);
+		private final RuleCall cScopeScopeParserRuleCall_15_3_1_0 = (RuleCall)cScopeAssignment_15_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_15_4 = (Keyword)cGroup_15.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
+		
+		//ExternalCallReturnParameter:
+		//	"ExternalCallReturnParameter" name=EString "{" "description" description=EString "characterization"
+		//	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		//	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+		//	("returnType" returnType=[repository::DataType|EString])? "externalCall"
+		//	externalCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ExternalCallReturnParameter" name=EString "{" "description" description=EString "characterization"
+		//characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		//"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+		//("returnType" returnType=[repository::DataType|EString])? "externalCall"
+		//externalCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ExternalCallReturnParameter"
+		public Keyword getExternalCallReturnParameterKeyword_0() { return cExternalCallReturnParameterKeyword_0; }
+
+		//name=EString
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_1_0() { return cNameEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"description"
+		public Keyword getDescriptionKeyword_3() { return cDescriptionKeyword_3; }
+
+		//description=EString
+		public Assignment getDescriptionAssignment_4() { return cDescriptionAssignment_4; }
+
+		//EString
+		public RuleCall getDescriptionEStringParserRuleCall_4_0() { return cDescriptionEStringParserRuleCall_4_0; }
+
+		//"characterization"
+		public Keyword getCharacterizationKeyword_5() { return cCharacterizationKeyword_5; }
+
+		//characterization=CharacterizationType
+		public Assignment getCharacterizationAssignment_6() { return cCharacterizationAssignment_6; }
+
+		//CharacterizationType
+		public RuleCall getCharacterizationCharacterizationTypeEnumRuleCall_6_0() { return cCharacterizationCharacterizationTypeEnumRuleCall_6_0; }
+
+		//"behavior"
+		public Keyword getBehaviorKeyword_7() { return cBehaviorKeyword_7; }
+
+		//behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public Assignment getBehaviorAssignment_8() { return cBehaviorAssignment_8; }
+
+		//[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public CrossReference getBehaviorServiceBehaviorAbstractionCrossReference_8_0() { return cBehaviorServiceBehaviorAbstractionCrossReference_8_0; }
+
+		//EString
+		public RuleCall getBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1() { return cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1; }
+
+		//"signature"
+		public Keyword getSignatureKeyword_9() { return cSignatureKeyword_9; }
+
+		//signature=[repository::Signature|EString]
+		public Assignment getSignatureAssignment_10() { return cSignatureAssignment_10; }
+
+		//[repository::Signature|EString]
+		public CrossReference getSignatureSignatureCrossReference_10_0() { return cSignatureSignatureCrossReference_10_0; }
+
+		//EString
+		public RuleCall getSignatureSignatureEStringParserRuleCall_10_0_1() { return cSignatureSignatureEStringParserRuleCall_10_0_1; }
+
+		//("parameter" parameter=[repository::Parameter|EString])?
+		public Group getGroup_11() { return cGroup_11; }
+
+		//"parameter"
+		public Keyword getParameterKeyword_11_0() { return cParameterKeyword_11_0; }
+
+		//parameter=[repository::Parameter|EString]
+		public Assignment getParameterAssignment_11_1() { return cParameterAssignment_11_1; }
+
+		//[repository::Parameter|EString]
+		public CrossReference getParameterParameterCrossReference_11_1_0() { return cParameterParameterCrossReference_11_1_0; }
+
+		//EString
+		public RuleCall getParameterParameterEStringParserRuleCall_11_1_0_1() { return cParameterParameterEStringParserRuleCall_11_1_0_1; }
+
+		//("returnType" returnType=[repository::DataType|EString])?
+		public Group getGroup_12() { return cGroup_12; }
+
+		//"returnType"
+		public Keyword getReturnTypeKeyword_12_0() { return cReturnTypeKeyword_12_0; }
+
+		//returnType=[repository::DataType|EString]
+		public Assignment getReturnTypeAssignment_12_1() { return cReturnTypeAssignment_12_1; }
+
+		//[repository::DataType|EString]
+		public CrossReference getReturnTypeDataTypeCrossReference_12_1_0() { return cReturnTypeDataTypeCrossReference_12_1_0; }
+
+		//EString
+		public RuleCall getReturnTypeDataTypeEStringParserRuleCall_12_1_0_1() { return cReturnTypeDataTypeEStringParserRuleCall_12_1_0_1; }
+
+		//"externalCall"
+		public Keyword getExternalCallKeyword_13() { return cExternalCallKeyword_13; }
+
+		//externalCall=[servicebehavior::ExternalCall|EString]
+		public Assignment getExternalCallAssignment_14() { return cExternalCallAssignment_14; }
+
+		//[servicebehavior::ExternalCall|EString]
+		public CrossReference getExternalCallExternalCallCrossReference_14_0() { return cExternalCallExternalCallCrossReference_14_0; }
+
+		//EString
+		public RuleCall getExternalCallExternalCallEStringParserRuleCall_14_0_1() { return cExternalCallExternalCallEStringParserRuleCall_14_0_1; }
+
+		//("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+		public Group getGroup_15() { return cGroup_15; }
+
+		//"scope"
+		public Keyword getScopeKeyword_15_0() { return cScopeKeyword_15_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_15_1() { return cLeftCurlyBracketKeyword_15_1; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_15_2() { return cScopeAssignment_15_2; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_15_2_0() { return cScopeScopeParserRuleCall_15_2_0; }
+
+		//("," scope+=Scope)*
+		public Group getGroup_15_3() { return cGroup_15_3; }
+
+		//","
+		public Keyword getCommaKeyword_15_3_0() { return cCommaKeyword_15_3_0; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_15_3_1() { return cScopeAssignment_15_3_1; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_15_3_1_0() { return cScopeScopeParserRuleCall_15_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_15_4() { return cRightCurlyBracketKeyword_15_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
+	}
+
+	public class ExternalCallParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalCallParameter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cExternalCallParameterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameEStringParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cDescriptionKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cDescriptionAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cDescriptionEStringParserRuleCall_4_0 = (RuleCall)cDescriptionAssignment_4.eContents().get(0);
+		private final Keyword cCharacterizationKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cCharacterizationAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cCharacterizationCharacterizationTypeEnumRuleCall_6_0 = (RuleCall)cCharacterizationAssignment_6.eContents().get(0);
+		private final Keyword cBehaviorKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cBehaviorAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final CrossReference cBehaviorServiceBehaviorAbstractionCrossReference_8_0 = (CrossReference)cBehaviorAssignment_8.eContents().get(0);
+		private final RuleCall cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1 = (RuleCall)cBehaviorServiceBehaviorAbstractionCrossReference_8_0.eContents().get(1);
+		private final Keyword cSignatureKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Assignment cSignatureAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final CrossReference cSignatureSignatureCrossReference_10_0 = (CrossReference)cSignatureAssignment_10.eContents().get(0);
+		private final RuleCall cSignatureSignatureEStringParserRuleCall_10_0_1 = (RuleCall)cSignatureSignatureCrossReference_10_0.eContents().get(1);
+		private final Group cGroup_11 = (Group)cGroup.eContents().get(11);
+		private final Keyword cParameterKeyword_11_0 = (Keyword)cGroup_11.eContents().get(0);
+		private final Assignment cParameterAssignment_11_1 = (Assignment)cGroup_11.eContents().get(1);
+		private final CrossReference cParameterParameterCrossReference_11_1_0 = (CrossReference)cParameterAssignment_11_1.eContents().get(0);
+		private final RuleCall cParameterParameterEStringParserRuleCall_11_1_0_1 = (RuleCall)cParameterParameterCrossReference_11_1_0.eContents().get(1);
+		private final Group cGroup_12 = (Group)cGroup.eContents().get(12);
+		private final Keyword cReturnTypeKeyword_12_0 = (Keyword)cGroup_12.eContents().get(0);
+		private final Assignment cReturnTypeAssignment_12_1 = (Assignment)cGroup_12.eContents().get(1);
+		private final CrossReference cReturnTypeDataTypeCrossReference_12_1_0 = (CrossReference)cReturnTypeAssignment_12_1.eContents().get(0);
+		private final RuleCall cReturnTypeDataTypeEStringParserRuleCall_12_1_0_1 = (RuleCall)cReturnTypeDataTypeCrossReference_12_1_0.eContents().get(1);
+		private final Keyword cExternallCallKeyword_13 = (Keyword)cGroup.eContents().get(13);
+		private final Assignment cExternallCallAssignment_14 = (Assignment)cGroup.eContents().get(14);
+		private final CrossReference cExternallCallExternalCallCrossReference_14_0 = (CrossReference)cExternallCallAssignment_14.eContents().get(0);
+		private final RuleCall cExternallCallExternalCallEStringParserRuleCall_14_0_1 = (RuleCall)cExternallCallExternalCallCrossReference_14_0.eContents().get(1);
+		private final Group cGroup_15 = (Group)cGroup.eContents().get(15);
+		private final Keyword cScopeKeyword_15_0 = (Keyword)cGroup_15.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_15_1 = (Keyword)cGroup_15.eContents().get(1);
+		private final Assignment cScopeAssignment_15_2 = (Assignment)cGroup_15.eContents().get(2);
+		private final RuleCall cScopeScopeParserRuleCall_15_2_0 = (RuleCall)cScopeAssignment_15_2.eContents().get(0);
+		private final Group cGroup_15_3 = (Group)cGroup_15.eContents().get(3);
+		private final Keyword cCommaKeyword_15_3_0 = (Keyword)cGroup_15_3.eContents().get(0);
+		private final Assignment cScopeAssignment_15_3_1 = (Assignment)cGroup_15_3.eContents().get(1);
+		private final RuleCall cScopeScopeParserRuleCall_15_3_1_0 = (RuleCall)cScopeAssignment_15_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_15_4 = (Keyword)cGroup_15.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_16 = (Keyword)cGroup.eContents().get(16);
+		
+		//ExternalCallParameter:
+		//	"ExternalCallParameter" name=EString "{" "description" description=EString "characterization"
+		//	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		//	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+		//	("returnType" returnType=[repository::DataType|EString])? "externallCall"
+		//	externallCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ExternalCallParameter" name=EString "{" "description" description=EString "characterization"
+		//characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		//"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+		//("returnType" returnType=[repository::DataType|EString])? "externallCall"
+		//externallCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ExternalCallParameter"
+		public Keyword getExternalCallParameterKeyword_0() { return cExternalCallParameterKeyword_0; }
+
+		//name=EString
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_1_0() { return cNameEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"description"
+		public Keyword getDescriptionKeyword_3() { return cDescriptionKeyword_3; }
+
+		//description=EString
+		public Assignment getDescriptionAssignment_4() { return cDescriptionAssignment_4; }
+
+		//EString
+		public RuleCall getDescriptionEStringParserRuleCall_4_0() { return cDescriptionEStringParserRuleCall_4_0; }
+
+		//"characterization"
+		public Keyword getCharacterizationKeyword_5() { return cCharacterizationKeyword_5; }
+
+		//characterization=CharacterizationType
+		public Assignment getCharacterizationAssignment_6() { return cCharacterizationAssignment_6; }
+
+		//CharacterizationType
+		public RuleCall getCharacterizationCharacterizationTypeEnumRuleCall_6_0() { return cCharacterizationCharacterizationTypeEnumRuleCall_6_0; }
+
+		//"behavior"
+		public Keyword getBehaviorKeyword_7() { return cBehaviorKeyword_7; }
+
+		//behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public Assignment getBehaviorAssignment_8() { return cBehaviorAssignment_8; }
+
+		//[servicebehavior::ServiceBehaviorAbstraction|EString]
+		public CrossReference getBehaviorServiceBehaviorAbstractionCrossReference_8_0() { return cBehaviorServiceBehaviorAbstractionCrossReference_8_0; }
+
+		//EString
+		public RuleCall getBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1() { return cBehaviorServiceBehaviorAbstractionEStringParserRuleCall_8_0_1; }
+
+		//"signature"
+		public Keyword getSignatureKeyword_9() { return cSignatureKeyword_9; }
+
+		//signature=[repository::Signature|EString]
+		public Assignment getSignatureAssignment_10() { return cSignatureAssignment_10; }
+
+		//[repository::Signature|EString]
+		public CrossReference getSignatureSignatureCrossReference_10_0() { return cSignatureSignatureCrossReference_10_0; }
+
+		//EString
+		public RuleCall getSignatureSignatureEStringParserRuleCall_10_0_1() { return cSignatureSignatureEStringParserRuleCall_10_0_1; }
+
+		//("parameter" parameter=[repository::Parameter|EString])?
+		public Group getGroup_11() { return cGroup_11; }
+
+		//"parameter"
+		public Keyword getParameterKeyword_11_0() { return cParameterKeyword_11_0; }
+
+		//parameter=[repository::Parameter|EString]
+		public Assignment getParameterAssignment_11_1() { return cParameterAssignment_11_1; }
+
+		//[repository::Parameter|EString]
+		public CrossReference getParameterParameterCrossReference_11_1_0() { return cParameterParameterCrossReference_11_1_0; }
+
+		//EString
+		public RuleCall getParameterParameterEStringParserRuleCall_11_1_0_1() { return cParameterParameterEStringParserRuleCall_11_1_0_1; }
+
+		//("returnType" returnType=[repository::DataType|EString])?
+		public Group getGroup_12() { return cGroup_12; }
+
+		//"returnType"
+		public Keyword getReturnTypeKeyword_12_0() { return cReturnTypeKeyword_12_0; }
+
+		//returnType=[repository::DataType|EString]
+		public Assignment getReturnTypeAssignment_12_1() { return cReturnTypeAssignment_12_1; }
+
+		//[repository::DataType|EString]
+		public CrossReference getReturnTypeDataTypeCrossReference_12_1_0() { return cReturnTypeDataTypeCrossReference_12_1_0; }
+
+		//EString
+		public RuleCall getReturnTypeDataTypeEStringParserRuleCall_12_1_0_1() { return cReturnTypeDataTypeEStringParserRuleCall_12_1_0_1; }
+
+		//"externallCall"
+		public Keyword getExternallCallKeyword_13() { return cExternallCallKeyword_13; }
+
+		//externallCall=[servicebehavior::ExternalCall|EString]
+		public Assignment getExternallCallAssignment_14() { return cExternallCallAssignment_14; }
+
+		//[servicebehavior::ExternalCall|EString]
+		public CrossReference getExternallCallExternalCallCrossReference_14_0() { return cExternallCallExternalCallCrossReference_14_0; }
+
+		//EString
+		public RuleCall getExternallCallExternalCallEStringParserRuleCall_14_0_1() { return cExternallCallExternalCallEStringParserRuleCall_14_0_1; }
+
+		//("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+		public Group getGroup_15() { return cGroup_15; }
+
+		//"scope"
+		public Keyword getScopeKeyword_15_0() { return cScopeKeyword_15_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_15_1() { return cLeftCurlyBracketKeyword_15_1; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_15_2() { return cScopeAssignment_15_2; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_15_2_0() { return cScopeScopeParserRuleCall_15_2_0; }
+
+		//("," scope+=Scope)*
+		public Group getGroup_15_3() { return cGroup_15_3; }
+
+		//","
+		public Keyword getCommaKeyword_15_3_0() { return cCommaKeyword_15_3_0; }
+
+		//scope+=Scope
+		public Assignment getScopeAssignment_15_3_1() { return cScopeAssignment_15_3_1; }
+
+		//Scope
+		public RuleCall getScopeScopeParserRuleCall_15_3_1_0() { return cScopeScopeParserRuleCall_15_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_15_4() { return cRightCurlyBracketKeyword_15_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_16() { return cRightCurlyBracketKeyword_16; }
+	}
+
+	public class FineGrainedBehaviorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FineGrainedBehavior");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFineGrainedBehaviorKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cDescribedSignatureKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cDescribedSignatureAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cDescribedSignatureSignatureCrossReference_2_1_0 = (CrossReference)cDescribedSignatureAssignment_2_1.eContents().get(0);
+		private final RuleCall cDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1 = (RuleCall)cDescribedSignatureSignatureCrossReference_2_1_0.eContents().get(1);
+		private final Keyword cBasicComponentKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cBasicComponentAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cBasicComponentBasicComponentCrossReference_4_0 = (CrossReference)cBasicComponentAssignment_4.eContents().get(0);
+		private final RuleCall cBasicComponentBasicComponentEStringParserRuleCall_4_0_1 = (RuleCall)cBasicComponentBasicComponentCrossReference_4_0.eContents().get(1);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cInfluencingParameterKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cInfluencingParameterAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final RuleCall cInfluencingParameterInfluencingParameterParserRuleCall_5_2_0 = (RuleCall)cInfluencingParameterAssignment_5_2.eContents().get(0);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cInfluencingParameterAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final RuleCall cInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0 = (RuleCall)cInfluencingParameterAssignment_5_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cActionsKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cActionsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cActionsAbstractActionParserRuleCall_6_2_0 = (RuleCall)cActionsAssignment_6_2.eContents().get(0);
+		private final Group cGroup_6_3 = (Group)cGroup_6.eContents().get(3);
+		private final Keyword cCommaKeyword_6_3_0 = (Keyword)cGroup_6_3.eContents().get(0);
+		private final Assignment cActionsAssignment_6_3_1 = (Assignment)cGroup_6_3.eContents().get(1);
+		private final RuleCall cActionsAbstractActionParserRuleCall_6_3_1_0 = (RuleCall)cActionsAssignment_6_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_4 = (Keyword)cGroup_6.eContents().get(4);
+		private final Keyword cBehaviorKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cBehaviorAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final RuleCall cBehaviorComponentInternalBehaviorParserRuleCall_8_0 = (RuleCall)cBehaviorAssignment_8.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		
+		//FineGrainedBehavior returns servicebehavior::FineGrainedBehavior:
+		//	"FineGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "basicComponent"
+		//	basicComponent=[repository::BasicComponent|EString] ("influencingParameter" "{"
+		//	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")? ("actions" "{"
+		//	actions+=AbstractAction ("," actions+=AbstractAction)* "}")? "behavior" behavior=ComponentInternalBehavior "}";
+		public ParserRule getRule() { return rule; }
+
+		//"FineGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "basicComponent"
+		//basicComponent=[repository::BasicComponent|EString] ("influencingParameter" "{"
+		//influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")? ("actions" "{"
+		//actions+=AbstractAction ("," actions+=AbstractAction)* "}")? "behavior" behavior=ComponentInternalBehavior "}"
+		public Group getGroup() { return cGroup; }
+
+		//"FineGrainedBehavior"
+		public Keyword getFineGrainedBehaviorKeyword_0() { return cFineGrainedBehaviorKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("describedSignature" describedSignature=[repository::Signature|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"describedSignature"
+		public Keyword getDescribedSignatureKeyword_2_0() { return cDescribedSignatureKeyword_2_0; }
+
+		//describedSignature=[repository::Signature|EString]
+		public Assignment getDescribedSignatureAssignment_2_1() { return cDescribedSignatureAssignment_2_1; }
+
+		//[repository::Signature|EString]
+		public CrossReference getDescribedSignatureSignatureCrossReference_2_1_0() { return cDescribedSignatureSignatureCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1() { return cDescribedSignatureSignatureEStringParserRuleCall_2_1_0_1; }
+
+		//"basicComponent"
+		public Keyword getBasicComponentKeyword_3() { return cBasicComponentKeyword_3; }
+
+		//basicComponent=[repository::BasicComponent|EString]
+		public Assignment getBasicComponentAssignment_4() { return cBasicComponentAssignment_4; }
+
+		//[repository::BasicComponent|EString]
+		public CrossReference getBasicComponentBasicComponentCrossReference_4_0() { return cBasicComponentBasicComponentCrossReference_4_0; }
+
+		//EString
+		public RuleCall getBasicComponentBasicComponentEStringParserRuleCall_4_0_1() { return cBasicComponentBasicComponentEStringParserRuleCall_4_0_1; }
+
+		//("influencingParameter" "{" influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)*
+		//"}")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"influencingParameter"
+		public Keyword getInfluencingParameterKeyword_5_0() { return cInfluencingParameterKeyword_5_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+		//influencingParameter+=InfluencingParameter
+		public Assignment getInfluencingParameterAssignment_5_2() { return cInfluencingParameterAssignment_5_2; }
+
+		//InfluencingParameter
+		public RuleCall getInfluencingParameterInfluencingParameterParserRuleCall_5_2_0() { return cInfluencingParameterInfluencingParameterParserRuleCall_5_2_0; }
+
+		//("," influencingParameter+=InfluencingParameter)*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//influencingParameter+=InfluencingParameter
+		public Assignment getInfluencingParameterAssignment_5_3_1() { return cInfluencingParameterAssignment_5_3_1; }
+
+		//InfluencingParameter
+		public RuleCall getInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0() { return cInfluencingParameterInfluencingParameterParserRuleCall_5_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
+
+		//("actions" "{" actions+=AbstractAction ("," actions+=AbstractAction)* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"actions"
+		public Keyword getActionsKeyword_6_0() { return cActionsKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//actions+=AbstractAction
+		public Assignment getActionsAssignment_6_2() { return cActionsAssignment_6_2; }
+
+		//AbstractAction
+		public RuleCall getActionsAbstractActionParserRuleCall_6_2_0() { return cActionsAbstractActionParserRuleCall_6_2_0; }
+
+		//("," actions+=AbstractAction)*
+		public Group getGroup_6_3() { return cGroup_6_3; }
+
+		//","
+		public Keyword getCommaKeyword_6_3_0() { return cCommaKeyword_6_3_0; }
+
+		//actions+=AbstractAction
+		public Assignment getActionsAssignment_6_3_1() { return cActionsAssignment_6_3_1; }
+
+		//AbstractAction
+		public RuleCall getActionsAbstractActionParserRuleCall_6_3_1_0() { return cActionsAbstractActionParserRuleCall_6_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_4() { return cRightCurlyBracketKeyword_6_4; }
+
+		//"behavior"
+		public Keyword getBehaviorKeyword_7() { return cBehaviorKeyword_7; }
+
+		//behavior=ComponentInternalBehavior
+		public Assignment getBehaviorAssignment_8() { return cBehaviorAssignment_8; }
+
+		//ComponentInternalBehavior
+		public RuleCall getBehaviorComponentInternalBehaviorParserRuleCall_8_0() { return cBehaviorComponentInternalBehaviorParserRuleCall_8_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
+	}
+
+	public class AbstractAction_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AbstractAction_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cAbstractActionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cAbstractActionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cPredecessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cPredecessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_3_1_0 = (CrossReference)cPredecessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cSuccessorKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cSuccessorAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_4_1_0 = (CrossReference)cSuccessorAssignment_4_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_4_1_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//AbstractAction_Impl returns servicebehavior::AbstractAction:
+		//	{servicebehavior::AbstractAction} "AbstractAction" "{" ("predecessor"
+		//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{servicebehavior::AbstractAction} "AbstractAction" "{" ("predecessor"
+		//predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{servicebehavior::AbstractAction}
+		public Action getAbstractActionAction_0() { return cAbstractActionAction_0; }
+
+		//"AbstractAction"
+		public Keyword getAbstractActionKeyword_1() { return cAbstractActionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_3_0() { return cPredecessorKeyword_3_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_3_1() { return cPredecessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_3_1_0() { return cPredecessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_4_0() { return cSuccessorKeyword_4_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_4_1() { return cSuccessorAssignment_4_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_4_1_0() { return cSuccessorAbstractActionCrossReference_4_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_4_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class ComponentInternalBehavior_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ComponentInternalBehavior_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cComponentInternalBehaviorAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cComponentInternalBehaviorKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cActionsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cActionsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cActionsAbstractActionParserRuleCall_3_2_0 = (RuleCall)cActionsAssignment_3_2.eContents().get(0);
+		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
+		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cActionsAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final RuleCall cActionsAbstractActionParserRuleCall_3_3_1_0 = (RuleCall)cActionsAssignment_3_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ComponentInternalBehavior_Impl returns servicebehavior::ComponentInternalBehavior:
+		//	{servicebehavior::ComponentInternalBehavior} "ComponentInternalBehavior" "{" ("actions" "{" actions+=AbstractAction
+		//	("," actions+=AbstractAction)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{servicebehavior::ComponentInternalBehavior} "ComponentInternalBehavior" "{" ("actions" "{" actions+=AbstractAction (","
+		//actions+=AbstractAction)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{servicebehavior::ComponentInternalBehavior}
+		public Action getComponentInternalBehaviorAction_0() { return cComponentInternalBehaviorAction_0; }
+
+		//"ComponentInternalBehavior"
+		public Keyword getComponentInternalBehaviorKeyword_1() { return cComponentInternalBehaviorKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("actions" "{" actions+=AbstractAction ("," actions+=AbstractAction)* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"actions"
+		public Keyword getActionsKeyword_3_0() { return cActionsKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//actions+=AbstractAction
+		public Assignment getActionsAssignment_3_2() { return cActionsAssignment_3_2; }
+
+		//AbstractAction
+		public RuleCall getActionsAbstractActionParserRuleCall_3_2_0() { return cActionsAbstractActionParserRuleCall_3_2_0; }
+
+		//("," actions+=AbstractAction)*
+		public Group getGroup_3_3() { return cGroup_3_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }
+
+		//actions+=AbstractAction
+		public Assignment getActionsAssignment_3_3_1() { return cActionsAssignment_3_3_1; }
+
+		//AbstractAction
+		public RuleCall getActionsAbstractActionParserRuleCall_3_3_1_0() { return cActionsAbstractActionParserRuleCall_3_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class StartActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StartAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStartActionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cStartActionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cPredecessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cPredecessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_3_1_0 = (CrossReference)cPredecessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cSuccessorKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cSuccessorAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_4_1_0 = (CrossReference)cSuccessorAssignment_4_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_4_1_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//StartAction returns servicebehavior::StartAction:
+		//	{servicebehavior::StartAction} "StartAction" "{" ("predecessor"
+		//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{servicebehavior::StartAction} "StartAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		//("successor" successor=[servicebehavior::AbstractAction|EString])? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{servicebehavior::StartAction}
+		public Action getStartActionAction_0() { return cStartActionAction_0; }
+
+		//"StartAction"
+		public Keyword getStartActionKeyword_1() { return cStartActionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_3_0() { return cPredecessorKeyword_3_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_3_1() { return cPredecessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_3_1_0() { return cPredecessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_4_0() { return cSuccessorKeyword_4_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_4_1() { return cSuccessorAssignment_4_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_4_1_0() { return cSuccessorAbstractActionCrossReference_4_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_4_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class StopActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "StopAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cStopActionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cStopActionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cPredecessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cPredecessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_3_1_0 = (CrossReference)cPredecessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cSuccessorKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cSuccessorAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_4_1_0 = (CrossReference)cSuccessorAssignment_4_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_4_1_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//StopAction returns servicebehavior::StopAction:
+		//	{servicebehavior::StopAction} "StopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		//	("successor" successor=[servicebehavior::AbstractAction|EString])? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{servicebehavior::StopAction} "StopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		//("successor" successor=[servicebehavior::AbstractAction|EString])? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{servicebehavior::StopAction}
+		public Action getStopActionAction_0() { return cStopActionAction_0; }
+
+		//"StopAction"
+		public Keyword getStopActionKeyword_1() { return cStopActionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_3_0() { return cPredecessorKeyword_3_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_3_1() { return cPredecessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_3_1_0() { return cPredecessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_4_0() { return cSuccessorKeyword_4_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_4_1() { return cSuccessorAssignment_4_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_4_1_0() { return cSuccessorAbstractActionCrossReference_4_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_4_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class AcquireActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AcquireAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cAcquireActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cPredecessorKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cPredecessorAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_2_1_0 = (CrossReference)cPredecessorAssignment_2_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_2_1_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSuccessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cSuccessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_3_1_0 = (CrossReference)cSuccessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Keyword cPassiveResourceKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cPassiveResourceAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cPassiveResourcePassiveResourceSpecificationCrossReference_5_0 = (CrossReference)cPassiveResourceAssignment_5.eContents().get(0);
+		private final RuleCall cPassiveResourcePassiveResourceSpecificationEStringParserRuleCall_5_0_1 = (RuleCall)cPassiveResourcePassiveResourceSpecificationCrossReference_5_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//AcquireAction returns servicebehavior::AcquireAction:
+		//	"AcquireAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+		//	passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"AcquireAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+		//passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"AcquireAction"
+		public Keyword getAcquireActionKeyword_0() { return cAcquireActionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_2_0() { return cPredecessorKeyword_2_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_2_1() { return cPredecessorAssignment_2_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_2_1_0() { return cPredecessorAbstractActionCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_2_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_3_0() { return cSuccessorKeyword_3_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_3_1() { return cSuccessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_3_1_0() { return cSuccessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//"passiveResource"
+		public Keyword getPassiveResourceKeyword_4() { return cPassiveResourceKeyword_4; }
+
+		//passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString]
+		public Assignment getPassiveResourceAssignment_5() { return cPassiveResourceAssignment_5; }
+
+		//[resourceconfiguration::PassiveResourceSpecification|EString]
+		public CrossReference getPassiveResourcePassiveResourceSpecificationCrossReference_5_0() { return cPassiveResourcePassiveResourceSpecificationCrossReference_5_0; }
+
+		//EString
+		public RuleCall getPassiveResourcePassiveResourceSpecificationEStringParserRuleCall_5_0_1() { return cPassiveResourcePassiveResourceSpecificationEStringParserRuleCall_5_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class ReleaseActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ReleaseAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cReleaseActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cPredecessorKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cPredecessorAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_2_1_0 = (CrossReference)cPredecessorAssignment_2_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_2_1_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSuccessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cSuccessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_3_1_0 = (CrossReference)cSuccessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Keyword cPassiveResourceKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cPassiveResourceAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cPassiveResourcePassiveResourceSpecificationCrossReference_5_0 = (CrossReference)cPassiveResourceAssignment_5.eContents().get(0);
+		private final RuleCall cPassiveResourcePassiveResourceSpecificationEStringParserRuleCall_5_0_1 = (RuleCall)cPassiveResourcePassiveResourceSpecificationCrossReference_5_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//ReleaseAction returns servicebehavior::ReleaseAction:
+		//	"ReleaseAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+		//	passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ReleaseAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+		//passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ReleaseAction"
+		public Keyword getReleaseActionKeyword_0() { return cReleaseActionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_2_0() { return cPredecessorKeyword_2_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_2_1() { return cPredecessorAssignment_2_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_2_1_0() { return cPredecessorAbstractActionCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_2_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_3_0() { return cSuccessorKeyword_3_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_3_1() { return cSuccessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_3_1_0() { return cSuccessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//"passiveResource"
+		public Keyword getPassiveResourceKeyword_4() { return cPassiveResourceKeyword_4; }
+
+		//passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString]
+		public Assignment getPassiveResourceAssignment_5() { return cPassiveResourceAssignment_5; }
+
+		//[resourceconfiguration::PassiveResourceSpecification|EString]
+		public CrossReference getPassiveResourcePassiveResourceSpecificationCrossReference_5_0() { return cPassiveResourcePassiveResourceSpecificationCrossReference_5_0; }
+
+		//EString
+		public RuleCall getPassiveResourcePassiveResourceSpecificationEStringParserRuleCall_5_0_1() { return cPassiveResourcePassiveResourceSpecificationEStringParserRuleCall_5_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class InternalActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InternalAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cInternalActionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cInternalActionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cPredecessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cPredecessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_3_1_0 = (CrossReference)cPredecessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cSuccessorKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cSuccessorAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_4_1_0 = (CrossReference)cSuccessorAssignment_4_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_4_1_0.eContents().get(1);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cResourceDemandSpecificationKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cResourceDemandSpecificationAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final RuleCall cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_2_0 = (RuleCall)cResourceDemandSpecificationAssignment_5_2.eContents().get(0);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cResourceDemandSpecificationAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final RuleCall cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_3_1_0 = (RuleCall)cResourceDemandSpecificationAssignment_5_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//InternalAction returns servicebehavior::InternalAction:
+		//	{servicebehavior::InternalAction} "InternalAction" "{" ("predecessor"
+		//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? ("resourceDemandSpecification" "{"
+		//	resourceDemandSpecification+=ResourceDemandSpecification (","
+		//	resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{servicebehavior::InternalAction} "InternalAction" "{" ("predecessor"
+		//predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? ("resourceDemandSpecification" "{"
+		//resourceDemandSpecification+=ResourceDemandSpecification (","
+		//resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{servicebehavior::InternalAction}
+		public Action getInternalActionAction_0() { return cInternalActionAction_0; }
+
+		//"InternalAction"
+		public Keyword getInternalActionKeyword_1() { return cInternalActionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_3_0() { return cPredecessorKeyword_3_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_3_1() { return cPredecessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_3_1_0() { return cPredecessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_4_0() { return cSuccessorKeyword_4_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_4_1() { return cSuccessorAssignment_4_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_4_1_0() { return cSuccessorAbstractActionCrossReference_4_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_4_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1; }
+
+		//("resourceDemandSpecification" "{" resourceDemandSpecification+=ResourceDemandSpecification (","
+		//resourceDemandSpecification+=ResourceDemandSpecification)* "}")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"resourceDemandSpecification"
+		public Keyword getResourceDemandSpecificationKeyword_5_0() { return cResourceDemandSpecificationKeyword_5_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+		//resourceDemandSpecification+=ResourceDemandSpecification
+		public Assignment getResourceDemandSpecificationAssignment_5_2() { return cResourceDemandSpecificationAssignment_5_2; }
+
+		//ResourceDemandSpecification
+		public RuleCall getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_2_0() { return cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_2_0; }
+
+		//("," resourceDemandSpecification+=ResourceDemandSpecification)*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//resourceDemandSpecification+=ResourceDemandSpecification
+		public Assignment getResourceDemandSpecificationAssignment_5_3_1() { return cResourceDemandSpecificationAssignment_5_3_1; }
+
+		//ResourceDemandSpecification
+		public RuleCall getResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_3_1_0() { return cResourceDemandSpecificationResourceDemandSpecificationParserRuleCall_5_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class ForkActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ForkAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cWithSynchronizationBarrierAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final Keyword cWithSynchronizationBarrierWithSynchronizationBarrierKeyword_0_0 = (Keyword)cWithSynchronizationBarrierAssignment_0.eContents().get(0);
+		private final Keyword cForkActionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cPredecessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cPredecessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_3_1_0 = (CrossReference)cPredecessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cSuccessorKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cSuccessorAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_4_1_0 = (CrossReference)cSuccessorAssignment_4_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_4_1_0.eContents().get(1);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cForkedBehaviorsKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cForkedBehaviorsAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final RuleCall cForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_2_0 = (RuleCall)cForkedBehaviorsAssignment_5_2.eContents().get(0);
+		private final Group cGroup_5_3 = (Group)cGroup_5.eContents().get(3);
+		private final Keyword cCommaKeyword_5_3_0 = (Keyword)cGroup_5_3.eContents().get(0);
+		private final Assignment cForkedBehaviorsAssignment_5_3_1 = (Assignment)cGroup_5_3.eContents().get(1);
+		private final RuleCall cForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_3_1_0 = (RuleCall)cForkedBehaviorsAssignment_5_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5_4 = (Keyword)cGroup_5.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//ForkAction returns servicebehavior::ForkAction:
+		//	withSynchronizationBarrier?="withSynchronizationBarrier" "ForkAction" "{" ("predecessor"
+		//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? ("forkedBehaviors" "{"
+		//	forkedBehaviors+=ComponentInternalBehavior ("," forkedBehaviors+=ComponentInternalBehavior)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//withSynchronizationBarrier?="withSynchronizationBarrier" "ForkAction" "{" ("predecessor"
+		//predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? ("forkedBehaviors" "{" forkedBehaviors+=ComponentInternalBehavior
+		//("," forkedBehaviors+=ComponentInternalBehavior)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//withSynchronizationBarrier?="withSynchronizationBarrier"
+		public Assignment getWithSynchronizationBarrierAssignment_0() { return cWithSynchronizationBarrierAssignment_0; }
+
+		//"withSynchronizationBarrier"
+		public Keyword getWithSynchronizationBarrierWithSynchronizationBarrierKeyword_0_0() { return cWithSynchronizationBarrierWithSynchronizationBarrierKeyword_0_0; }
+
+		//"ForkAction"
+		public Keyword getForkActionKeyword_1() { return cForkActionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_3_0() { return cPredecessorKeyword_3_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_3_1() { return cPredecessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_3_1_0() { return cPredecessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_4_0() { return cSuccessorKeyword_4_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_4_1() { return cSuccessorAssignment_4_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_4_1_0() { return cSuccessorAbstractActionCrossReference_4_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_4_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_4_1_0_1; }
+
+		//("forkedBehaviors" "{" forkedBehaviors+=ComponentInternalBehavior ("," forkedBehaviors+=ComponentInternalBehavior)*
+		//"}")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"forkedBehaviors"
+		public Keyword getForkedBehaviorsKeyword_5_0() { return cForkedBehaviorsKeyword_5_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+		//forkedBehaviors+=ComponentInternalBehavior
+		public Assignment getForkedBehaviorsAssignment_5_2() { return cForkedBehaviorsAssignment_5_2; }
+
+		//ComponentInternalBehavior
+		public RuleCall getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_2_0() { return cForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_2_0; }
+
+		//("," forkedBehaviors+=ComponentInternalBehavior)*
+		public Group getGroup_5_3() { return cGroup_5_3; }
+
+		//","
+		public Keyword getCommaKeyword_5_3_0() { return cCommaKeyword_5_3_0; }
+
+		//forkedBehaviors+=ComponentInternalBehavior
+		public Assignment getForkedBehaviorsAssignment_5_3_1() { return cForkedBehaviorsAssignment_5_3_1; }
+
+		//ComponentInternalBehavior
+		public RuleCall getForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_3_1_0() { return cForkedBehaviorsComponentInternalBehaviorParserRuleCall_5_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5_4() { return cRightCurlyBracketKeyword_5_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class BranchActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BranchAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBranchActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cPredecessorKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cPredecessorAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_2_1_0 = (CrossReference)cPredecessorAssignment_2_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_2_1_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSuccessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cSuccessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_3_1_0 = (CrossReference)cSuccessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cBranchesKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
+		private final Assignment cBranchesAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
+		private final RuleCall cBranchesBranchTransitionParserRuleCall_4_2_0 = (RuleCall)cBranchesAssignment_4_2.eContents().get(0);
+		private final Group cGroup_4_3 = (Group)cGroup_4.eContents().get(3);
+		private final Keyword cCommaKeyword_4_3_0 = (Keyword)cGroup_4_3.eContents().get(0);
+		private final Assignment cBranchesAssignment_4_3_1 = (Assignment)cGroup_4_3.eContents().get(1);
+		private final RuleCall cBranchesBranchTransitionParserRuleCall_4_3_1_0 = (RuleCall)cBranchesAssignment_4_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4_4 = (Keyword)cGroup_4.eContents().get(4);
+		private final Keyword cBranchProbabilitiesKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cBranchProbabilitiesAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cBranchProbabilitiesBranchProbabilitiesParserRuleCall_6_0 = (RuleCall)cBranchProbabilitiesAssignment_6.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//BranchAction returns servicebehavior::BranchAction:
+		//	"BranchAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? ("branches" "{" branches+=BranchTransition (","
+		//	branches+=BranchTransition)* "}")? "branchProbabilities" branchProbabilities=BranchProbabilities "}";
+		public ParserRule getRule() { return rule; }
+
+		//"BranchAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? ("branches" "{" branches+=BranchTransition (","
+		//branches+=BranchTransition)* "}")? "branchProbabilities" branchProbabilities=BranchProbabilities "}"
+		public Group getGroup() { return cGroup; }
+
+		//"BranchAction"
+		public Keyword getBranchActionKeyword_0() { return cBranchActionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_2_0() { return cPredecessorKeyword_2_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_2_1() { return cPredecessorAssignment_2_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_2_1_0() { return cPredecessorAbstractActionCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_2_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_3_0() { return cSuccessorKeyword_3_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_3_1() { return cSuccessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_3_1_0() { return cSuccessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//("branches" "{" branches+=BranchTransition ("," branches+=BranchTransition)* "}")?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"branches"
+		public Keyword getBranchesKeyword_4_0() { return cBranchesKeyword_4_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_4_1() { return cLeftCurlyBracketKeyword_4_1; }
+
+		//branches+=BranchTransition
+		public Assignment getBranchesAssignment_4_2() { return cBranchesAssignment_4_2; }
+
+		//BranchTransition
+		public RuleCall getBranchesBranchTransitionParserRuleCall_4_2_0() { return cBranchesBranchTransitionParserRuleCall_4_2_0; }
+
+		//("," branches+=BranchTransition)*
+		public Group getGroup_4_3() { return cGroup_4_3; }
+
+		//","
+		public Keyword getCommaKeyword_4_3_0() { return cCommaKeyword_4_3_0; }
+
+		//branches+=BranchTransition
+		public Assignment getBranchesAssignment_4_3_1() { return cBranchesAssignment_4_3_1; }
+
+		//BranchTransition
+		public RuleCall getBranchesBranchTransitionParserRuleCall_4_3_1_0() { return cBranchesBranchTransitionParserRuleCall_4_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4_4() { return cRightCurlyBracketKeyword_4_4; }
+
+		//"branchProbabilities"
+		public Keyword getBranchProbabilitiesKeyword_5() { return cBranchProbabilitiesKeyword_5; }
+
+		//branchProbabilities=BranchProbabilities
+		public Assignment getBranchProbabilitiesAssignment_6() { return cBranchProbabilitiesAssignment_6; }
+
+		//BranchProbabilities
+		public RuleCall getBranchProbabilitiesBranchProbabilitiesParserRuleCall_6_0() { return cBranchProbabilitiesBranchProbabilitiesParserRuleCall_6_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class LoopActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LoopAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLoopActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cPredecessorKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cPredecessorAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_2_1_0 = (CrossReference)cPredecessorAssignment_2_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_2_1_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSuccessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cSuccessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_3_1_0 = (CrossReference)cSuccessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Keyword cLoopBodyBehaviorKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cLoopBodyBehaviorAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cLoopBodyBehaviorComponentInternalBehaviorParserRuleCall_5_0 = (RuleCall)cLoopBodyBehaviorAssignment_5.eContents().get(0);
+		private final Keyword cLoopIterationCountDistributionKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cLoopIterationCountDistributionAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cLoopIterationCountDistributionLoopIterationCountDistributionParserRuleCall_7_0 = (RuleCall)cLoopIterationCountDistributionAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//LoopAction returns servicebehavior::LoopAction:
+		//	"LoopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? "loopBodyBehavior" loopBodyBehavior=ComponentInternalBehavior
+		//	"loopIterationCountDistribution" loopIterationCountDistribution=LoopIterationCountDistribution "}";
+		public ParserRule getRule() { return rule; }
+
+		//"LoopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? "loopBodyBehavior" loopBodyBehavior=ComponentInternalBehavior
+		//"loopIterationCountDistribution" loopIterationCountDistribution=LoopIterationCountDistribution "}"
+		public Group getGroup() { return cGroup; }
+
+		//"LoopAction"
+		public Keyword getLoopActionKeyword_0() { return cLoopActionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_2_0() { return cPredecessorKeyword_2_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_2_1() { return cPredecessorAssignment_2_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_2_1_0() { return cPredecessorAbstractActionCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_2_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_3_0() { return cSuccessorKeyword_3_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_3_1() { return cSuccessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_3_1_0() { return cSuccessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//"loopBodyBehavior"
+		public Keyword getLoopBodyBehaviorKeyword_4() { return cLoopBodyBehaviorKeyword_4; }
+
+		//loopBodyBehavior=ComponentInternalBehavior
+		public Assignment getLoopBodyBehaviorAssignment_5() { return cLoopBodyBehaviorAssignment_5; }
+
+		//ComponentInternalBehavior
+		public RuleCall getLoopBodyBehaviorComponentInternalBehaviorParserRuleCall_5_0() { return cLoopBodyBehaviorComponentInternalBehaviorParserRuleCall_5_0; }
+
+		//"loopIterationCountDistribution"
+		public Keyword getLoopIterationCountDistributionKeyword_6() { return cLoopIterationCountDistributionKeyword_6; }
+
+		//loopIterationCountDistribution=LoopIterationCountDistribution
+		public Assignment getLoopIterationCountDistributionAssignment_7() { return cLoopIterationCountDistributionAssignment_7; }
+
+		//LoopIterationCountDistribution
+		public RuleCall getLoopIterationCountDistributionLoopIterationCountDistributionParserRuleCall_7_0() { return cLoopIterationCountDistributionLoopIterationCountDistributionParserRuleCall_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class ExternalCallActionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalCallAction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cExternalCallActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cPredecessorKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cPredecessorAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cPredecessorAbstractActionCrossReference_2_1_0 = (CrossReference)cPredecessorAssignment_2_1.eContents().get(0);
+		private final RuleCall cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1 = (RuleCall)cPredecessorAbstractActionCrossReference_2_1_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSuccessorKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cSuccessorAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cSuccessorAbstractActionCrossReference_3_1_0 = (CrossReference)cSuccessorAssignment_3_1.eContents().get(0);
+		private final RuleCall cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1 = (RuleCall)cSuccessorAbstractActionCrossReference_3_1_0.eContents().get(1);
+		private final Keyword cSignatureKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cSignatureAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cSignatureSignatureCrossReference_5_0 = (CrossReference)cSignatureAssignment_5.eContents().get(0);
+		private final RuleCall cSignatureSignatureEStringParserRuleCall_5_0_1 = (RuleCall)cSignatureSignatureCrossReference_5_0.eContents().get(1);
+		private final Keyword cRequiredRoleKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cRequiredRoleAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final CrossReference cRequiredRoleRequiredRoleCrossReference_7_0 = (CrossReference)cRequiredRoleAssignment_7.eContents().get(0);
+		private final RuleCall cRequiredRoleRequiredRoleEStringParserRuleCall_7_0_1 = (RuleCall)cRequiredRoleRequiredRoleCrossReference_7_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//ExternalCallAction returns servicebehavior::ExternalCallAction:
+		//	"ExternalCallAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//	successor=[servicebehavior::AbstractAction|EString])? "signature" signature=[repository::Signature|EString]
+		//	"requiredRole" requiredRole=[repository::RequiredRole|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ExternalCallAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+		//successor=[servicebehavior::AbstractAction|EString])? "signature" signature=[repository::Signature|EString]
+		//"requiredRole" requiredRole=[repository::RequiredRole|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ExternalCallAction"
+		public Keyword getExternalCallActionKeyword_0() { return cExternalCallActionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"predecessor"
+		public Keyword getPredecessorKeyword_2_0() { return cPredecessorKeyword_2_0; }
+
+		//predecessor=[servicebehavior::AbstractAction|EString]
+		public Assignment getPredecessorAssignment_2_1() { return cPredecessorAssignment_2_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getPredecessorAbstractActionCrossReference_2_1_0() { return cPredecessorAbstractActionCrossReference_2_1_0; }
+
+		//EString
+		public RuleCall getPredecessorAbstractActionEStringParserRuleCall_2_1_0_1() { return cPredecessorAbstractActionEStringParserRuleCall_2_1_0_1; }
+
+		//("successor" successor=[servicebehavior::AbstractAction|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"successor"
+		public Keyword getSuccessorKeyword_3_0() { return cSuccessorKeyword_3_0; }
+
+		//successor=[servicebehavior::AbstractAction|EString]
+		public Assignment getSuccessorAssignment_3_1() { return cSuccessorAssignment_3_1; }
+
+		//[servicebehavior::AbstractAction|EString]
+		public CrossReference getSuccessorAbstractActionCrossReference_3_1_0() { return cSuccessorAbstractActionCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getSuccessorAbstractActionEStringParserRuleCall_3_1_0_1() { return cSuccessorAbstractActionEStringParserRuleCall_3_1_0_1; }
+
+		//"signature"
+		public Keyword getSignatureKeyword_4() { return cSignatureKeyword_4; }
+
+		//signature=[repository::Signature|EString]
+		public Assignment getSignatureAssignment_5() { return cSignatureAssignment_5; }
+
+		//[repository::Signature|EString]
+		public CrossReference getSignatureSignatureCrossReference_5_0() { return cSignatureSignatureCrossReference_5_0; }
+
+		//EString
+		public RuleCall getSignatureSignatureEStringParserRuleCall_5_0_1() { return cSignatureSignatureEStringParserRuleCall_5_0_1; }
+
+		//"requiredRole"
+		public Keyword getRequiredRoleKeyword_6() { return cRequiredRoleKeyword_6; }
+
+		//requiredRole=[repository::RequiredRole|EString]
+		public Assignment getRequiredRoleAssignment_7() { return cRequiredRoleAssignment_7; }
+
+		//[repository::RequiredRole|EString]
+		public CrossReference getRequiredRoleRequiredRoleCrossReference_7_0() { return cRequiredRoleRequiredRoleCrossReference_7_0; }
+
+		//EString
+		public RuleCall getRequiredRoleRequiredRoleEStringParserRuleCall_7_0_1() { return cRequiredRoleRequiredRoleEStringParserRuleCall_7_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class PassiveResourceSpecificationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PassiveResourceSpecification");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPassiveResourceSpecificationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cPassiveResourceTypeKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cPassiveResourceTypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cPassiveResourceTypePassiveResourceTypeCrossReference_6_0 = (CrossReference)cPassiveResourceTypeAssignment_6.eContents().get(0);
+		private final RuleCall cPassiveResourceTypePassiveResourceTypeEStringParserRuleCall_6_0_1 = (RuleCall)cPassiveResourceTypePassiveResourceTypeCrossReference_6_0.eContents().get(1);
+		private final Keyword cCapacityKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cCapacityAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final RuleCall cCapacityPassiveResourceCapacityParserRuleCall_8_0 = (RuleCall)cCapacityAssignment_8.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		
+		//PassiveResourceSpecification returns resourceconfiguration::PassiveResourceSpecification:
+		//	"PassiveResourceSpecification" id=EString "{" "name" name=EString "passiveResourceType"
+		//	passiveResourceType=[resourcetype::PassiveResourceType|EString] "capacity" capacity=PassiveResourceCapacity "}";
+		public ParserRule getRule() { return rule; }
+
+		//"PassiveResourceSpecification" id=EString "{" "name" name=EString "passiveResourceType"
+		//passiveResourceType=[resourcetype::PassiveResourceType|EString] "capacity" capacity=PassiveResourceCapacity "}"
+		public Group getGroup() { return cGroup; }
+
+		//"PassiveResourceSpecification"
+		public Keyword getPassiveResourceSpecificationKeyword_0() { return cPassiveResourceSpecificationKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"passiveResourceType"
+		public Keyword getPassiveResourceTypeKeyword_5() { return cPassiveResourceTypeKeyword_5; }
+
+		//passiveResourceType=[resourcetype::PassiveResourceType|EString]
+		public Assignment getPassiveResourceTypeAssignment_6() { return cPassiveResourceTypeAssignment_6; }
+
+		//[resourcetype::PassiveResourceType|EString]
+		public CrossReference getPassiveResourceTypePassiveResourceTypeCrossReference_6_0() { return cPassiveResourceTypePassiveResourceTypeCrossReference_6_0; }
+
+		//EString
+		public RuleCall getPassiveResourceTypePassiveResourceTypeEStringParserRuleCall_6_0_1() { return cPassiveResourceTypePassiveResourceTypeEStringParserRuleCall_6_0_1; }
+
+		//"capacity"
+		public Keyword getCapacityKeyword_7() { return cCapacityKeyword_7; }
+
+		//capacity=PassiveResourceCapacity
+		public Assignment getCapacityAssignment_8() { return cCapacityAssignment_8; }
+
+		//PassiveResourceCapacity
+		public RuleCall getCapacityPassiveResourceCapacityParserRuleCall_8_0() { return cCapacityPassiveResourceCapacityParserRuleCall_8_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
+	}
+
+	public class PassiveResourceCapacityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PassiveResourceCapacity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPassiveResourceCapacityKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cCapacityKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cCapacityAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cCapacityEBigIntegerParserRuleCall_6_0 = (RuleCall)cCapacityAssignment_6.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//PassiveResourceCapacity returns resourceconfiguration::PassiveResourceCapacity:
+		//	"PassiveResourceCapacity" id=EString "{" "name" name=EString "capacity" capacity=EBigInteger "}";
+		public ParserRule getRule() { return rule; }
+
+		//"PassiveResourceCapacity" id=EString "{" "name" name=EString "capacity" capacity=EBigInteger "}"
+		public Group getGroup() { return cGroup; }
+
+		//"PassiveResourceCapacity"
+		public Keyword getPassiveResourceCapacityKeyword_0() { return cPassiveResourceCapacityKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"capacity"
+		public Keyword getCapacityKeyword_5() { return cCapacityKeyword_5; }
+
+		//capacity=EBigInteger
+		public Assignment getCapacityAssignment_6() { return cCapacityAssignment_6; }
+
+		//EBigInteger
+		public RuleCall getCapacityEBigIntegerParserRuleCall_6_0() { return cCapacityEBigIntegerParserRuleCall_6_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class PassiveResourceTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PassiveResourceType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPassiveResourceTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//PassiveResourceType returns resourcetype::PassiveResourceType:
+		//	"PassiveResourceType" id=EString "{" "name" name=EString "}";
+		public ParserRule getRule() { return rule; }
+
+		//"PassiveResourceType" id=EString "{" "name" name=EString "}"
+		public Group getGroup() { return cGroup; }
+
+		//"PassiveResourceType"
+		public Keyword getPassiveResourceTypeKeyword_0() { return cPassiveResourceTypeKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class EBigIntegerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EBigInteger");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//EBigInteger returns ecore::EBigInteger:
+		//	"-"? INT;
+		public ParserRule getRule() { return rule; }
+
+		//"-"? INT
+		public Group getGroup() { return cGroup; }
+
+		//"-"?
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
+	}
+
+	public class ResourceDemandSpecificationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ResourceDemandSpecification");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cResourceDemandSpecificationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cProcessingResourceTypeKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cProcessingResourceTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cProcessingResourceTypeProcessingResourceTypeCrossReference_3_0 = (CrossReference)cProcessingResourceTypeAssignment_3.eContents().get(0);
+		private final RuleCall cProcessingResourceTypeProcessingResourceTypeEStringParserRuleCall_3_0_1 = (RuleCall)cProcessingResourceTypeProcessingResourceTypeCrossReference_3_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ResourceDemandSpecification returns servicebehavior::ResourceDemandSpecification:
+		//	"ResourceDemandSpecification" "{" "processingResourceType"
+		//	processingResourceType=[resourcetype::ProcessingResourceType|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ResourceDemandSpecification" "{" "processingResourceType"
+		//processingResourceType=[resourcetype::ProcessingResourceType|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ResourceDemandSpecification"
+		public Keyword getResourceDemandSpecificationKeyword_0() { return cResourceDemandSpecificationKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"processingResourceType"
+		public Keyword getProcessingResourceTypeKeyword_2() { return cProcessingResourceTypeKeyword_2; }
+
+		//processingResourceType=[resourcetype::ProcessingResourceType|EString]
+		public Assignment getProcessingResourceTypeAssignment_3() { return cProcessingResourceTypeAssignment_3; }
+
+		//[resourcetype::ProcessingResourceType|EString]
+		public CrossReference getProcessingResourceTypeProcessingResourceTypeCrossReference_3_0() { return cProcessingResourceTypeProcessingResourceTypeCrossReference_3_0; }
+
+		//EString
+		public RuleCall getProcessingResourceTypeProcessingResourceTypeEStringParserRuleCall_3_0_1() { return cProcessingResourceTypeProcessingResourceTypeEStringParserRuleCall_3_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class ProcessingResourceType_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProcessingResourceType_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cProcessingResourceTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//ProcessingResourceType_Impl returns resourcetype::ProcessingResourceType:
+		//	"ProcessingResourceType" id=EString "{" "name" name=EString "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ProcessingResourceType" id=EString "{" "name" name=EString "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ProcessingResourceType"
+		public Keyword getProcessingResourceTypeKeyword_0() { return cProcessingResourceTypeKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class CommunicationLinkResourceTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CommunicationLinkResourceType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCommunicationLinkResourceTypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//CommunicationLinkResourceType returns resourcetype::CommunicationLinkResourceType:
+		//	"CommunicationLinkResourceType" id=EString "{" "name" name=EString "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CommunicationLinkResourceType" id=EString "{" "name" name=EString "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CommunicationLinkResourceType"
+		public Keyword getCommunicationLinkResourceTypeKeyword_0() { return cCommunicationLinkResourceTypeKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class EBooleanElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EBoolean");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final Keyword cTrueKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
+		private final Keyword cFalseKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
+		
+		//EBoolean returns ecore::EBoolean:
+		//	"true" | "false";
+		public ParserRule getRule() { return rule; }
+
+		//"true" | "false"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//"true"
+		public Keyword getTrueKeyword_0() { return cTrueKeyword_0; }
+
+		//"false"
+		public Keyword getFalseKeyword_1() { return cFalseKeyword_1; }
+	}
+
+	public class BranchTransitionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BranchTransition");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBranchTransitionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cBranchBehaviorKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cBranchBehaviorAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cBranchBehaviorComponentInternalBehaviorParserRuleCall_6_0 = (RuleCall)cBranchBehaviorAssignment_6.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//BranchTransition returns servicebehavior::BranchTransition:
+		//	"BranchTransition" id=EString "{" "name" name=EString "branchBehavior" branchBehavior=ComponentInternalBehavior "}";
+		public ParserRule getRule() { return rule; }
+
+		//"BranchTransition" id=EString "{" "name" name=EString "branchBehavior" branchBehavior=ComponentInternalBehavior "}"
+		public Group getGroup() { return cGroup; }
+
+		//"BranchTransition"
+		public Keyword getBranchTransitionKeyword_0() { return cBranchTransitionKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"branchBehavior"
+		public Keyword getBranchBehaviorKeyword_5() { return cBranchBehaviorKeyword_5; }
+
+		//branchBehavior=ComponentInternalBehavior
+		public Assignment getBranchBehaviorAssignment_6() { return cBranchBehaviorAssignment_6; }
+
+		//ComponentInternalBehavior
+		public RuleCall getBranchBehaviorComponentInternalBehaviorParserRuleCall_6_0() { return cBranchBehaviorComponentInternalBehaviorParserRuleCall_6_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class BranchProbabilitiesElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BranchProbabilities");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cBranchProbabilitiesKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cProbabilitiesKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cProbabilitiesAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cProbabilitiesRandomVariableCrossReference_3_0 = (CrossReference)cProbabilitiesAssignment_3.eContents().get(0);
+		private final RuleCall cProbabilitiesRandomVariableEStringParserRuleCall_3_0_1 = (RuleCall)cProbabilitiesRandomVariableCrossReference_3_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//BranchProbabilities returns servicebehavior::BranchProbabilities:
+		//	"BranchProbabilities" "{" "probabilities" probabilities=[functions::RandomVariable|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"BranchProbabilities" "{" "probabilities" probabilities=[functions::RandomVariable|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"BranchProbabilities"
+		public Keyword getBranchProbabilitiesKeyword_0() { return cBranchProbabilitiesKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"probabilities"
+		public Keyword getProbabilitiesKeyword_2() { return cProbabilitiesKeyword_2; }
+
+		//probabilities=[functions::RandomVariable|EString]
+		public Assignment getProbabilitiesAssignment_3() { return cProbabilitiesAssignment_3; }
+
+		//[functions::RandomVariable|EString]
+		public CrossReference getProbabilitiesRandomVariableCrossReference_3_0() { return cProbabilitiesRandomVariableCrossReference_3_0; }
+
+		//EString
+		public RuleCall getProbabilitiesRandomVariableEStringParserRuleCall_3_0_1() { return cProbabilitiesRandomVariableEStringParserRuleCall_3_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class RandomVariableElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RandomVariable");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRandomVariableKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cSpecificationKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cSpecificationAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cSpecificationEStringParserRuleCall_3_0 = (RuleCall)cSpecificationAssignment_3.eContents().get(0);
+		private final Keyword cProbFunctionKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cProbFunctionAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cProbFunctionProbabilityFunctionCrossReference_5_0 = (CrossReference)cProbFunctionAssignment_5.eContents().get(0);
+		private final RuleCall cProbFunctionProbabilityFunctionEStringParserRuleCall_5_0_1 = (RuleCall)cProbFunctionProbabilityFunctionCrossReference_5_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//RandomVariable returns functions::RandomVariable:
+		//	"RandomVariable" "{" "specification" specification=EString "probFunction"
+		//	probFunction=[functions::ProbabilityFunction|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"RandomVariable" "{" "specification" specification=EString "probFunction"
+		//probFunction=[functions::ProbabilityFunction|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"RandomVariable"
+		public Keyword getRandomVariableKeyword_0() { return cRandomVariableKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"specification"
+		public Keyword getSpecificationKeyword_2() { return cSpecificationKeyword_2; }
+
+		//specification=EString
+		public Assignment getSpecificationAssignment_3() { return cSpecificationAssignment_3; }
+
+		//EString
+		public RuleCall getSpecificationEStringParserRuleCall_3_0() { return cSpecificationEStringParserRuleCall_3_0; }
+
+		//"probFunction"
+		public Keyword getProbFunctionKeyword_4() { return cProbFunctionKeyword_4; }
+
+		//probFunction=[functions::ProbabilityFunction|EString]
+		public Assignment getProbFunctionAssignment_5() { return cProbFunctionAssignment_5; }
+
+		//[functions::ProbabilityFunction|EString]
+		public CrossReference getProbFunctionProbabilityFunctionCrossReference_5_0() { return cProbFunctionProbabilityFunctionCrossReference_5_0; }
+
+		//EString
+		public RuleCall getProbFunctionProbabilityFunctionEStringParserRuleCall_5_0_1() { return cProbFunctionProbabilityFunctionEStringParserRuleCall_5_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class ProbabilityMassFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProbabilityMassFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cProbabilityMassFunctionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cProbabilityMassFunctionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSampleKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cSampleAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cSampleSampleParserRuleCall_3_2_0 = (RuleCall)cSampleAssignment_3_2.eContents().get(0);
+		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
+		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cSampleAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final RuleCall cSampleSampleParserRuleCall_3_3_1_0 = (RuleCall)cSampleAssignment_3_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ProbabilityMassFunction returns functions::ProbabilityMassFunction:
+		//	{functions::ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)*
+		//	"}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{functions::ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)*
+		//"}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{functions::ProbabilityMassFunction}
+		public Action getProbabilityMassFunctionAction_0() { return cProbabilityMassFunctionAction_0; }
+
+		//"ProbabilityMassFunction"
+		public Keyword getProbabilityMassFunctionKeyword_1() { return cProbabilityMassFunctionKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("sample" "{" sample+=Sample ("," sample+=Sample)* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"sample"
+		public Keyword getSampleKeyword_3_0() { return cSampleKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//sample+=Sample
+		public Assignment getSampleAssignment_3_2() { return cSampleAssignment_3_2; }
+
+		//Sample
+		public RuleCall getSampleSampleParserRuleCall_3_2_0() { return cSampleSampleParserRuleCall_3_2_0; }
+
+		//("," sample+=Sample)*
+		public Group getGroup_3_3() { return cGroup_3_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }
+
+		//sample+=Sample
+		public Assignment getSampleAssignment_3_3_1() { return cSampleAssignment_3_3_1; }
+
+		//Sample
+		public RuleCall getSampleSampleParserRuleCall_3_3_1_0() { return cSampleSampleParserRuleCall_3_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class ProbabilityDensityFunction_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProbabilityDensityFunction_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cProbabilityDensityFunctionAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cProbabilityDensityFunctionKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//ProbabilityDensityFunction_Impl returns functions::ProbabilityDensityFunction:
+		//	{functions::ProbabilityDensityFunction} "ProbabilityDensityFunction";
+		public ParserRule getRule() { return rule; }
+
+		//{functions::ProbabilityDensityFunction} "ProbabilityDensityFunction"
+		public Group getGroup() { return cGroup; }
+
+		//{functions::ProbabilityDensityFunction}
+		public Action getProbabilityDensityFunctionAction_0() { return cProbabilityDensityFunctionAction_0; }
+
+		//"ProbabilityDensityFunction"
+		public Keyword getProbabilityDensityFunctionKeyword_1() { return cProbabilityDensityFunctionKeyword_1; }
+	}
+
+	public class BoxedPDFElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BoxedPDF");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cBoxedPDFAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cBoxedPDFKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cSampleKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cSampleAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cSampleContinuousSampleParserRuleCall_3_2_0 = (RuleCall)cSampleAssignment_3_2.eContents().get(0);
+		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
+		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cSampleAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final RuleCall cSampleContinuousSampleParserRuleCall_3_3_1_0 = (RuleCall)cSampleAssignment_3_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//BoxedPDF returns functions::BoxedPDF:
+		//	{functions::BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{functions::BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{functions::BoxedPDF}
+		public Action getBoxedPDFAction_0() { return cBoxedPDFAction_0; }
+
+		//"BoxedPDF"
+		public Keyword getBoxedPDFKeyword_1() { return cBoxedPDFKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"sample"
+		public Keyword getSampleKeyword_3_0() { return cSampleKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//sample+=ContinuousSample
+		public Assignment getSampleAssignment_3_2() { return cSampleAssignment_3_2; }
+
+		//ContinuousSample
+		public RuleCall getSampleContinuousSampleParserRuleCall_3_2_0() { return cSampleContinuousSampleParserRuleCall_3_2_0; }
+
+		//("," sample+=ContinuousSample)*
+		public Group getGroup_3_3() { return cGroup_3_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }
+
+		//sample+=ContinuousSample
+		public Assignment getSampleAssignment_3_3_1() { return cSampleAssignment_3_3_1; }
+
+		//ContinuousSample
+		public RuleCall getSampleContinuousSampleParserRuleCall_3_3_1_0() { return cSampleContinuousSampleParserRuleCall_3_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_4() { return cRightCurlyBracketKeyword_3_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class ContinuousPDF_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ContinuousPDF_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cContinuousPDFAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cContinuousPDFKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//ContinuousPDF_Impl returns functions::ContinuousPDF:
+		//	{functions::ContinuousPDF} "ContinuousPDF";
+		public ParserRule getRule() { return rule; }
+
+		//{functions::ContinuousPDF} "ContinuousPDF"
+		public Group getGroup() { return cGroup; }
+
+		//{functions::ContinuousPDF}
+		public Action getContinuousPDFAction_0() { return cContinuousPDFAction_0; }
+
+		//"ContinuousPDF"
+		public Keyword getContinuousPDFKeyword_1() { return cContinuousPDFKeyword_1; }
+	}
+
+	public class NormalDistributionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "NormalDistribution");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cNormalDistributionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cMuKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMuAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMuEBigDecimalParserRuleCall_3_0 = (RuleCall)cMuAssignment_3.eContents().get(0);
+		private final Keyword cSigmaKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cSigmaAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cSigmaEBigDecimalParserRuleCall_5_0 = (RuleCall)cSigmaAssignment_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//NormalDistribution returns functions::NormalDistribution:
+		//	"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}";
+		public ParserRule getRule() { return rule; }
+
+		//"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}"
+		public Group getGroup() { return cGroup; }
+
+		//"NormalDistribution"
+		public Keyword getNormalDistributionKeyword_0() { return cNormalDistributionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"mu"
+		public Keyword getMuKeyword_2() { return cMuKeyword_2; }
+
+		//mu=EBigDecimal
+		public Assignment getMuAssignment_3() { return cMuAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getMuEBigDecimalParserRuleCall_3_0() { return cMuEBigDecimalParserRuleCall_3_0; }
+
+		//"sigma"
+		public Keyword getSigmaKeyword_4() { return cSigmaKeyword_4; }
+
+		//sigma=EBigDecimal
+		public Assignment getSigmaAssignment_5() { return cSigmaAssignment_5; }
+
+		//EBigDecimal
+		public RuleCall getSigmaEBigDecimalParserRuleCall_5_0() { return cSigmaEBigDecimalParserRuleCall_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class ExponentialDistributionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExponentialDistribution");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cExponentialDistributionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cRateKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cRateAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cRateEBigDecimalParserRuleCall_3_0 = (RuleCall)cRateAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ExponentialDistribution returns functions::ExponentialDistribution:
+		//	"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ExponentialDistribution"
+		public Keyword getExponentialDistributionKeyword_0() { return cExponentialDistributionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"rate"
+		public Keyword getRateKeyword_2() { return cRateKeyword_2; }
+
+		//rate=EBigDecimal
+		public Assignment getRateAssignment_3() { return cRateAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getRateEBigDecimalParserRuleCall_3_0() { return cRateEBigDecimalParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class SampleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Sample");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSampleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cProbabilityKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cProbabilityAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cProbabilityEBigDecimalParserRuleCall_3_0 = (RuleCall)cProbabilityAssignment_3.eContents().get(0);
+		private final Keyword cValueKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cValueAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cValueEObjectCrossReference_5_0 = (CrossReference)cValueAssignment_5.eContents().get(0);
+		private final RuleCall cValueEObjectEStringParserRuleCall_5_0_1 = (RuleCall)cValueEObjectCrossReference_5_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//Sample returns functions::Sample:
+		//	"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"Sample"
+		public Keyword getSampleKeyword_0() { return cSampleKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"probability"
+		public Keyword getProbabilityKeyword_2() { return cProbabilityKeyword_2; }
+
+		//probability=EBigDecimal
+		public Assignment getProbabilityAssignment_3() { return cProbabilityAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getProbabilityEBigDecimalParserRuleCall_3_0() { return cProbabilityEBigDecimalParserRuleCall_3_0; }
+
+		//"value"
+		public Keyword getValueKeyword_4() { return cValueKeyword_4; }
+
+		//value=[ecore::EObject|EString]
+		public Assignment getValueAssignment_5() { return cValueAssignment_5; }
+
+		//[ecore::EObject|EString]
+		public CrossReference getValueEObjectCrossReference_5_0() { return cValueEObjectCrossReference_5_0; }
+
+		//EString
+		public RuleCall getValueEObjectEStringParserRuleCall_5_0_1() { return cValueEObjectEStringParserRuleCall_5_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class EObjectElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EObject");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cEObjectAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cEObjectKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//EObject returns ecore::EObject:
+		//	{ecore::EObject} "EObject";
+		public ParserRule getRule() { return rule; }
+
+		//{ecore::EObject} "EObject"
+		public Group getGroup() { return cGroup; }
+
+		//{ecore::EObject}
+		public Action getEObjectAction_0() { return cEObjectAction_0; }
+
+		//"EObject"
+		public Keyword getEObjectKeyword_1() { return cEObjectKeyword_1; }
+	}
+
+	public class EBigDecimalElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EBigDecimal");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cINTTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Keyword cFullStopKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final RuleCall cINTTerminalRuleCall_2 = (RuleCall)cGroup.eContents().get(2);
+		
+		//EBigDecimal returns ecore::EBigDecimal:
+		//	INT? "." INT;
+		public ParserRule getRule() { return rule; }
+
+		//INT? "." INT
+		public Group getGroup() { return cGroup; }
+
+		//INT?
+		public RuleCall getINTTerminalRuleCall_0() { return cINTTerminalRuleCall_0; }
+
+		//"."
+		public Keyword getFullStopKeyword_1() { return cFullStopKeyword_1; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_2() { return cINTTerminalRuleCall_2; }
+	}
+
+	public class ContinuousSampleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ContinuousSample");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cContinuousSampleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cValueKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cValueEBigDecimalParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
+		private final Keyword cProbabilityKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cProbabilityAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cProbabilityEBigDecimalParserRuleCall_5_0 = (RuleCall)cProbabilityAssignment_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//ContinuousSample returns functions::ContinuousSample:
+		//	"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ContinuousSample"
+		public Keyword getContinuousSampleKeyword_0() { return cContinuousSampleKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"value"
+		public Keyword getValueKeyword_2() { return cValueKeyword_2; }
+
+		//value=EBigDecimal
+		public Assignment getValueAssignment_3() { return cValueAssignment_3; }
+
+		//EBigDecimal
+		public RuleCall getValueEBigDecimalParserRuleCall_3_0() { return cValueEBigDecimalParserRuleCall_3_0; }
+
+		//"probability"
+		public Keyword getProbabilityKeyword_4() { return cProbabilityKeyword_4; }
+
+		//probability=EBigDecimal
+		public Assignment getProbabilityAssignment_5() { return cProbabilityAssignment_5; }
+
+		//EBigDecimal
+		public RuleCall getProbabilityEBigDecimalParserRuleCall_5_0() { return cProbabilityEBigDecimalParserRuleCall_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class LoopIterationCountDistributionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LoopIterationCountDistribution");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLoopIterationCountDistributionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLoopIterationCountDistributionKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cLoopIterationCountDistributionAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cLoopIterationCountDistributionRandomVariableCrossReference_3_0 = (CrossReference)cLoopIterationCountDistributionAssignment_3.eContents().get(0);
+		private final RuleCall cLoopIterationCountDistributionRandomVariableEStringParserRuleCall_3_0_1 = (RuleCall)cLoopIterationCountDistributionRandomVariableCrossReference_3_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//LoopIterationCountDistribution returns servicebehavior::LoopIterationCountDistribution:
+		//	"LoopIterationCountDistribution" "{" "loopIterationCountDistribution"
+		//	loopIterationCountDistribution=[functions::RandomVariable|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"LoopIterationCountDistribution" "{" "loopIterationCountDistribution"
+		//loopIterationCountDistribution=[functions::RandomVariable|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"LoopIterationCountDistribution"
+		public Keyword getLoopIterationCountDistributionKeyword_0() { return cLoopIterationCountDistributionKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"loopIterationCountDistribution"
+		public Keyword getLoopIterationCountDistributionKeyword_2() { return cLoopIterationCountDistributionKeyword_2; }
+
+		//loopIterationCountDistribution=[functions::RandomVariable|EString]
+		public Assignment getLoopIterationCountDistributionAssignment_3() { return cLoopIterationCountDistributionAssignment_3; }
+
+		//[functions::RandomVariable|EString]
+		public CrossReference getLoopIterationCountDistributionRandomVariableCrossReference_3_0() { return cLoopIterationCountDistributionRandomVariableCrossReference_3_0; }
+
+		//EString
+		public RuleCall getLoopIterationCountDistributionRandomVariableEStringParserRuleCall_3_0_1() { return cLoopIterationCountDistributionRandomVariableEStringParserRuleCall_3_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class AssemblyContextElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AssemblyContext");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cAssemblyContextKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cEncapsulatedComponentKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cEncapsulatedComponentAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cEncapsulatedComponentRepositoryComponentCrossReference_6_0 = (CrossReference)cEncapsulatedComponentAssignment_6.eContents().get(0);
+		private final RuleCall cEncapsulatedComponentRepositoryComponentEStringParserRuleCall_6_0_1 = (RuleCall)cEncapsulatedComponentRepositoryComponentCrossReference_6_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//AssemblyContext returns repository::AssemblyContext:
+		//	"AssemblyContext" id=EString "{" "name" name=EString "encapsulatedComponent"
+		//	encapsulatedComponent=[repository::RepositoryComponent|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"AssemblyContext" id=EString "{" "name" name=EString "encapsulatedComponent"
+		//encapsulatedComponent=[repository::RepositoryComponent|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"AssemblyContext"
+		public Keyword getAssemblyContextKeyword_0() { return cAssemblyContextKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"encapsulatedComponent"
+		public Keyword getEncapsulatedComponentKeyword_5() { return cEncapsulatedComponentKeyword_5; }
+
+		//encapsulatedComponent=[repository::RepositoryComponent|EString]
+		public Assignment getEncapsulatedComponentAssignment_6() { return cEncapsulatedComponentAssignment_6; }
+
+		//[repository::RepositoryComponent|EString]
+		public CrossReference getEncapsulatedComponentRepositoryComponentCrossReference_6_0() { return cEncapsulatedComponentRepositoryComponentCrossReference_6_0; }
+
+		//EString
+		public RuleCall getEncapsulatedComponentRepositoryComponentEStringParserRuleCall_6_0_1() { return cEncapsulatedComponentRepositoryComponentEStringParserRuleCall_6_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+	}
+
+	public class AssemblyConnectorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AssemblyConnector");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cAssemblyConnectorKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cRequiredRoleKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cRequiredRoleAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cRequiredRoleRequiredRoleCrossReference_6_0 = (CrossReference)cRequiredRoleAssignment_6.eContents().get(0);
+		private final RuleCall cRequiredRoleRequiredRoleEStringParserRuleCall_6_0_1 = (RuleCall)cRequiredRoleRequiredRoleCrossReference_6_0.eContents().get(1);
+		private final Keyword cProvidedRoleKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cProvidedRoleAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final CrossReference cProvidedRoleProvidedRoleCrossReference_8_0 = (CrossReference)cProvidedRoleAssignment_8.eContents().get(0);
+		private final RuleCall cProvidedRoleProvidedRoleEStringParserRuleCall_8_0_1 = (RuleCall)cProvidedRoleProvidedRoleCrossReference_8_0.eContents().get(1);
+		private final Keyword cProvidingAssemblyContextKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Assignment cProvidingAssemblyContextAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final CrossReference cProvidingAssemblyContextAssemblyContextCrossReference_10_0 = (CrossReference)cProvidingAssemblyContextAssignment_10.eContents().get(0);
+		private final RuleCall cProvidingAssemblyContextAssemblyContextEStringParserRuleCall_10_0_1 = (RuleCall)cProvidingAssemblyContextAssemblyContextCrossReference_10_0.eContents().get(1);
+		private final Keyword cRequiringAssemblyContextKeyword_11 = (Keyword)cGroup.eContents().get(11);
+		private final Assignment cRequiringAssemblyContextAssignment_12 = (Assignment)cGroup.eContents().get(12);
+		private final CrossReference cRequiringAssemblyContextAssemblyContextCrossReference_12_0 = (CrossReference)cRequiringAssemblyContextAssignment_12.eContents().get(0);
+		private final RuleCall cRequiringAssemblyContextAssemblyContextEStringParserRuleCall_12_0_1 = (RuleCall)cRequiringAssemblyContextAssemblyContextCrossReference_12_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_13 = (Keyword)cGroup.eContents().get(13);
+		
+		//AssemblyConnector returns repository::AssemblyConnector:
+		//	"AssemblyConnector" id=EString "{" "name" name=EString "requiredRole" requiredRole=[repository::RequiredRole|EString]
+		//	"providedRole" providedRole=[repository::ProvidedRole|EString] "providingAssemblyContext"
+		//	providingAssemblyContext=[repository::AssemblyContext|EString] "requiringAssemblyContext"
+		//	requiringAssemblyContext=[repository::AssemblyContext|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"AssemblyConnector" id=EString "{" "name" name=EString "requiredRole" requiredRole=[repository::RequiredRole|EString]
+		//"providedRole" providedRole=[repository::ProvidedRole|EString] "providingAssemblyContext"
+		//providingAssemblyContext=[repository::AssemblyContext|EString] "requiringAssemblyContext"
+		//requiringAssemblyContext=[repository::AssemblyContext|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"AssemblyConnector"
+		public Keyword getAssemblyConnectorKeyword_0() { return cAssemblyConnectorKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"requiredRole"
+		public Keyword getRequiredRoleKeyword_5() { return cRequiredRoleKeyword_5; }
+
+		//requiredRole=[repository::RequiredRole|EString]
+		public Assignment getRequiredRoleAssignment_6() { return cRequiredRoleAssignment_6; }
+
+		//[repository::RequiredRole|EString]
+		public CrossReference getRequiredRoleRequiredRoleCrossReference_6_0() { return cRequiredRoleRequiredRoleCrossReference_6_0; }
+
+		//EString
+		public RuleCall getRequiredRoleRequiredRoleEStringParserRuleCall_6_0_1() { return cRequiredRoleRequiredRoleEStringParserRuleCall_6_0_1; }
+
+		//"providedRole"
+		public Keyword getProvidedRoleKeyword_7() { return cProvidedRoleKeyword_7; }
+
+		//providedRole=[repository::ProvidedRole|EString]
+		public Assignment getProvidedRoleAssignment_8() { return cProvidedRoleAssignment_8; }
+
+		//[repository::ProvidedRole|EString]
+		public CrossReference getProvidedRoleProvidedRoleCrossReference_8_0() { return cProvidedRoleProvidedRoleCrossReference_8_0; }
+
+		//EString
+		public RuleCall getProvidedRoleProvidedRoleEStringParserRuleCall_8_0_1() { return cProvidedRoleProvidedRoleEStringParserRuleCall_8_0_1; }
+
+		//"providingAssemblyContext"
+		public Keyword getProvidingAssemblyContextKeyword_9() { return cProvidingAssemblyContextKeyword_9; }
+
+		//providingAssemblyContext=[repository::AssemblyContext|EString]
+		public Assignment getProvidingAssemblyContextAssignment_10() { return cProvidingAssemblyContextAssignment_10; }
+
+		//[repository::AssemblyContext|EString]
+		public CrossReference getProvidingAssemblyContextAssemblyContextCrossReference_10_0() { return cProvidingAssemblyContextAssemblyContextCrossReference_10_0; }
+
+		//EString
+		public RuleCall getProvidingAssemblyContextAssemblyContextEStringParserRuleCall_10_0_1() { return cProvidingAssemblyContextAssemblyContextEStringParserRuleCall_10_0_1; }
+
+		//"requiringAssemblyContext"
+		public Keyword getRequiringAssemblyContextKeyword_11() { return cRequiringAssemblyContextKeyword_11; }
+
+		//requiringAssemblyContext=[repository::AssemblyContext|EString]
+		public Assignment getRequiringAssemblyContextAssignment_12() { return cRequiringAssemblyContextAssignment_12; }
+
+		//[repository::AssemblyContext|EString]
+		public CrossReference getRequiringAssemblyContextAssemblyContextCrossReference_12_0() { return cRequiringAssemblyContextAssemblyContextCrossReference_12_0; }
+
+		//EString
+		public RuleCall getRequiringAssemblyContextAssemblyContextEStringParserRuleCall_12_0_1() { return cRequiringAssemblyContextAssemblyContextEStringParserRuleCall_12_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_13() { return cRightCurlyBracketKeyword_13; }
+	}
+
+	public class ProvidedDelegationConnectorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ProvidedDelegationConnector");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cProvidedDelegationConnectorKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cAssemblyContextKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cAssemblyContextAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cAssemblyContextAssemblyContextCrossReference_6_0 = (CrossReference)cAssemblyContextAssignment_6.eContents().get(0);
+		private final RuleCall cAssemblyContextAssemblyContextEStringParserRuleCall_6_0_1 = (RuleCall)cAssemblyContextAssemblyContextCrossReference_6_0.eContents().get(1);
+		private final Keyword cInnerProvidedRoleKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cInnerProvidedRoleAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final CrossReference cInnerProvidedRoleProvidedRoleCrossReference_8_0 = (CrossReference)cInnerProvidedRoleAssignment_8.eContents().get(0);
+		private final RuleCall cInnerProvidedRoleProvidedRoleEStringParserRuleCall_8_0_1 = (RuleCall)cInnerProvidedRoleProvidedRoleCrossReference_8_0.eContents().get(1);
+		private final Keyword cOuterProvidedRoleKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Assignment cOuterProvidedRoleAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final CrossReference cOuterProvidedRoleProvidedRoleCrossReference_10_0 = (CrossReference)cOuterProvidedRoleAssignment_10.eContents().get(0);
+		private final RuleCall cOuterProvidedRoleProvidedRoleEStringParserRuleCall_10_0_1 = (RuleCall)cOuterProvidedRoleProvidedRoleCrossReference_10_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
+		
+		//ProvidedDelegationConnector returns repository::ProvidedDelegationConnector:
+		//	"ProvidedDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+		//	assemblyContext=[repository::AssemblyContext|EString] "innerProvidedRole"
+		//	innerProvidedRole=[repository::ProvidedRole|EString] "outerProvidedRole"
+		//	outerProvidedRole=[repository::ProvidedRole|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ProvidedDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+		//assemblyContext=[repository::AssemblyContext|EString] "innerProvidedRole"
+		//innerProvidedRole=[repository::ProvidedRole|EString] "outerProvidedRole"
+		//outerProvidedRole=[repository::ProvidedRole|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ProvidedDelegationConnector"
+		public Keyword getProvidedDelegationConnectorKeyword_0() { return cProvidedDelegationConnectorKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"assemblyContext"
+		public Keyword getAssemblyContextKeyword_5() { return cAssemblyContextKeyword_5; }
+
+		//assemblyContext=[repository::AssemblyContext|EString]
+		public Assignment getAssemblyContextAssignment_6() { return cAssemblyContextAssignment_6; }
+
+		//[repository::AssemblyContext|EString]
+		public CrossReference getAssemblyContextAssemblyContextCrossReference_6_0() { return cAssemblyContextAssemblyContextCrossReference_6_0; }
+
+		//EString
+		public RuleCall getAssemblyContextAssemblyContextEStringParserRuleCall_6_0_1() { return cAssemblyContextAssemblyContextEStringParserRuleCall_6_0_1; }
+
+		//"innerProvidedRole"
+		public Keyword getInnerProvidedRoleKeyword_7() { return cInnerProvidedRoleKeyword_7; }
+
+		//innerProvidedRole=[repository::ProvidedRole|EString]
+		public Assignment getInnerProvidedRoleAssignment_8() { return cInnerProvidedRoleAssignment_8; }
+
+		//[repository::ProvidedRole|EString]
+		public CrossReference getInnerProvidedRoleProvidedRoleCrossReference_8_0() { return cInnerProvidedRoleProvidedRoleCrossReference_8_0; }
+
+		//EString
+		public RuleCall getInnerProvidedRoleProvidedRoleEStringParserRuleCall_8_0_1() { return cInnerProvidedRoleProvidedRoleEStringParserRuleCall_8_0_1; }
+
+		//"outerProvidedRole"
+		public Keyword getOuterProvidedRoleKeyword_9() { return cOuterProvidedRoleKeyword_9; }
+
+		//outerProvidedRole=[repository::ProvidedRole|EString]
+		public Assignment getOuterProvidedRoleAssignment_10() { return cOuterProvidedRoleAssignment_10; }
+
+		//[repository::ProvidedRole|EString]
+		public CrossReference getOuterProvidedRoleProvidedRoleCrossReference_10_0() { return cOuterProvidedRoleProvidedRoleCrossReference_10_0; }
+
+		//EString
+		public RuleCall getOuterProvidedRoleProvidedRoleEStringParserRuleCall_10_0_1() { return cOuterProvidedRoleProvidedRoleEStringParserRuleCall_10_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_11() { return cRightCurlyBracketKeyword_11; }
+	}
+
+	public class RequiredDelegationConnectorElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RequiredDelegationConnector");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRequiredDelegationConnectorKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cIdAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cIdEStringParserRuleCall_1_0 = (RuleCall)cIdAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cNameKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameEStringParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cAssemblyContextKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cAssemblyContextAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cAssemblyContextAssemblyContextCrossReference_6_0 = (CrossReference)cAssemblyContextAssignment_6.eContents().get(0);
+		private final RuleCall cAssemblyContextAssemblyContextEStringParserRuleCall_6_0_1 = (RuleCall)cAssemblyContextAssemblyContextCrossReference_6_0.eContents().get(1);
+		private final Keyword cInnerRequiredRoleKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cInnerRequiredRoleAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final CrossReference cInnerRequiredRoleRequiredRoleCrossReference_8_0 = (CrossReference)cInnerRequiredRoleAssignment_8.eContents().get(0);
+		private final RuleCall cInnerRequiredRoleRequiredRoleEStringParserRuleCall_8_0_1 = (RuleCall)cInnerRequiredRoleRequiredRoleCrossReference_8_0.eContents().get(1);
+		private final Keyword cOuterRequiredRoleKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Assignment cOuterRequiredRoleAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final CrossReference cOuterRequiredRoleRequiredRoleCrossReference_10_0 = (CrossReference)cOuterRequiredRoleAssignment_10.eContents().get(0);
+		private final RuleCall cOuterRequiredRoleRequiredRoleEStringParserRuleCall_10_0_1 = (RuleCall)cOuterRequiredRoleRequiredRoleCrossReference_10_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_11 = (Keyword)cGroup.eContents().get(11);
+		
+		//RequiredDelegationConnector returns repository::RequiredDelegationConnector:
+		//	"RequiredDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+		//	assemblyContext=[repository::AssemblyContext|EString] "innerRequiredRole"
+		//	innerRequiredRole=[repository::RequiredRole|EString] "outerRequiredRole"
+		//	outerRequiredRole=[repository::RequiredRole|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"RequiredDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+		//assemblyContext=[repository::AssemblyContext|EString] "innerRequiredRole"
+		//innerRequiredRole=[repository::RequiredRole|EString] "outerRequiredRole"
+		//outerRequiredRole=[repository::RequiredRole|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"RequiredDelegationConnector"
+		public Keyword getRequiredDelegationConnectorKeyword_0() { return cRequiredDelegationConnectorKeyword_0; }
+
+		//id=EString
+		public Assignment getIdAssignment_1() { return cIdAssignment_1; }
+
+		//EString
+		public RuleCall getIdEStringParserRuleCall_1_0() { return cIdEStringParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"name"
+		public Keyword getNameKeyword_3() { return cNameKeyword_3; }
+
+		//name=EString
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//EString
+		public RuleCall getNameEStringParserRuleCall_4_0() { return cNameEStringParserRuleCall_4_0; }
+
+		//"assemblyContext"
+		public Keyword getAssemblyContextKeyword_5() { return cAssemblyContextKeyword_5; }
+
+		//assemblyContext=[repository::AssemblyContext|EString]
+		public Assignment getAssemblyContextAssignment_6() { return cAssemblyContextAssignment_6; }
+
+		//[repository::AssemblyContext|EString]
+		public CrossReference getAssemblyContextAssemblyContextCrossReference_6_0() { return cAssemblyContextAssemblyContextCrossReference_6_0; }
+
+		//EString
+		public RuleCall getAssemblyContextAssemblyContextEStringParserRuleCall_6_0_1() { return cAssemblyContextAssemblyContextEStringParserRuleCall_6_0_1; }
+
+		//"innerRequiredRole"
+		public Keyword getInnerRequiredRoleKeyword_7() { return cInnerRequiredRoleKeyword_7; }
+
+		//innerRequiredRole=[repository::RequiredRole|EString]
+		public Assignment getInnerRequiredRoleAssignment_8() { return cInnerRequiredRoleAssignment_8; }
+
+		//[repository::RequiredRole|EString]
+		public CrossReference getInnerRequiredRoleRequiredRoleCrossReference_8_0() { return cInnerRequiredRoleRequiredRoleCrossReference_8_0; }
+
+		//EString
+		public RuleCall getInnerRequiredRoleRequiredRoleEStringParserRuleCall_8_0_1() { return cInnerRequiredRoleRequiredRoleEStringParserRuleCall_8_0_1; }
+
+		//"outerRequiredRole"
+		public Keyword getOuterRequiredRoleKeyword_9() { return cOuterRequiredRoleKeyword_9; }
+
+		//outerRequiredRole=[repository::RequiredRole|EString]
+		public Assignment getOuterRequiredRoleAssignment_10() { return cOuterRequiredRoleAssignment_10; }
+
+		//[repository::RequiredRole|EString]
+		public CrossReference getOuterRequiredRoleRequiredRoleCrossReference_10_0() { return cOuterRequiredRoleRequiredRoleCrossReference_10_0; }
+
+		//EString
+		public RuleCall getOuterRequiredRoleRequiredRoleEStringParserRuleCall_10_0_1() { return cOuterRequiredRoleRequiredRoleEStringParserRuleCall_10_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_11() { return cRightCurlyBracketKeyword_11; }
+	}
+
+	public class ExternalCall_ImplElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalCall_Impl");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cExternalCallKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cSignatureKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cSignatureAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cSignatureSignatureCrossReference_3_0 = (CrossReference)cSignatureAssignment_3.eContents().get(0);
+		private final RuleCall cSignatureSignatureEStringParserRuleCall_3_0_1 = (RuleCall)cSignatureSignatureCrossReference_3_0.eContents().get(1);
+		private final Keyword cRequiredRoleKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cRequiredRoleAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cRequiredRoleRequiredRoleCrossReference_5_0 = (CrossReference)cRequiredRoleAssignment_5.eContents().get(0);
+		private final RuleCall cRequiredRoleRequiredRoleEStringParserRuleCall_5_0_1 = (RuleCall)cRequiredRoleRequiredRoleCrossReference_5_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//ExternalCall_Impl returns servicebehavior::ExternalCall:
+		//	"ExternalCall" "{" "signature" signature=[repository::Signature|EString] "requiredRole"
+		//	requiredRole=[repository::RequiredRole|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ExternalCall" "{" "signature" signature=[repository::Signature|EString] "requiredRole"
+		//requiredRole=[repository::RequiredRole|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ExternalCall"
+		public Keyword getExternalCallKeyword_0() { return cExternalCallKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"signature"
+		public Keyword getSignatureKeyword_2() { return cSignatureKeyword_2; }
+
+		//signature=[repository::Signature|EString]
+		public Assignment getSignatureAssignment_3() { return cSignatureAssignment_3; }
+
+		//[repository::Signature|EString]
+		public CrossReference getSignatureSignatureCrossReference_3_0() { return cSignatureSignatureCrossReference_3_0; }
+
+		//EString
+		public RuleCall getSignatureSignatureEStringParserRuleCall_3_0_1() { return cSignatureSignatureEStringParserRuleCall_3_0_1; }
+
+		//"requiredRole"
+		public Keyword getRequiredRoleKeyword_4() { return cRequiredRoleKeyword_4; }
+
+		//requiredRole=[repository::RequiredRole|EString]
+		public Assignment getRequiredRoleAssignment_5() { return cRequiredRoleAssignment_5; }
+
+		//[repository::RequiredRole|EString]
+		public CrossReference getRequiredRoleRequiredRoleCrossReference_5_0() { return cRequiredRoleRequiredRoleCrossReference_5_0; }
+
+		//EString
+		public RuleCall getRequiredRoleRequiredRoleEStringParserRuleCall_5_0_1() { return cRequiredRoleRequiredRoleEStringParserRuleCall_5_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class ExternalCallFrequencyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExternalCallFrequency");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cExternalCallFrequencyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cExternalCallKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cExternalCallAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cExternalCallExternalCallParserRuleCall_3_0 = (RuleCall)cExternalCallAssignment_3.eContents().get(0);
+		private final Keyword cFrequencyKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cFrequencyAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cFrequencyCallFrequencyParserRuleCall_5_0 = (RuleCall)cFrequencyAssignment_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//ExternalCallFrequency returns servicebehavior::ExternalCallFrequency:
+		//	"ExternalCallFrequency" "{" "externalCall" externalCall=ExternalCall "frequency" frequency=CallFrequency "}";
+		public ParserRule getRule() { return rule; }
+
+		//"ExternalCallFrequency" "{" "externalCall" externalCall=ExternalCall "frequency" frequency=CallFrequency "}"
+		public Group getGroup() { return cGroup; }
+
+		//"ExternalCallFrequency"
+		public Keyword getExternalCallFrequencyKeyword_0() { return cExternalCallFrequencyKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"externalCall"
+		public Keyword getExternalCallKeyword_2() { return cExternalCallKeyword_2; }
+
+		//externalCall=ExternalCall
+		public Assignment getExternalCallAssignment_3() { return cExternalCallAssignment_3; }
+
+		//ExternalCall
+		public RuleCall getExternalCallExternalCallParserRuleCall_3_0() { return cExternalCallExternalCallParserRuleCall_3_0; }
+
+		//"frequency"
+		public Keyword getFrequencyKeyword_4() { return cFrequencyKeyword_4; }
+
+		//frequency=CallFrequency
+		public Assignment getFrequencyAssignment_5() { return cFrequencyAssignment_5; }
+
+		//CallFrequency
+		public RuleCall getFrequencyCallFrequencyParserRuleCall_5_0() { return cFrequencyCallFrequencyParserRuleCall_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class CallFrequencyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CallFrequency");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCallFrequencyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cFrequencyKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cFrequencyAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cFrequencyRandomVariableCrossReference_3_0 = (CrossReference)cFrequencyAssignment_3.eContents().get(0);
+		private final RuleCall cFrequencyRandomVariableEStringParserRuleCall_3_0_1 = (RuleCall)cFrequencyRandomVariableCrossReference_3_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//CallFrequency returns servicebehavior::CallFrequency:
+		//	"CallFrequency" "{" "frequency" frequency=[functions::RandomVariable|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CallFrequency" "{" "frequency" frequency=[functions::RandomVariable|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CallFrequency"
+		public Keyword getCallFrequencyKeyword_0() { return cCallFrequencyKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"frequency"
+		public Keyword getFrequencyKeyword_2() { return cFrequencyKeyword_2; }
+
+		//frequency=[functions::RandomVariable|EString]
+		public Assignment getFrequencyAssignment_3() { return cFrequencyAssignment_3; }
+
+		//[functions::RandomVariable|EString]
+		public CrossReference getFrequencyRandomVariableCrossReference_3_0() { return cFrequencyRandomVariableCrossReference_3_0; }
+
+		//EString
+		public RuleCall getFrequencyRandomVariableEStringParserRuleCall_3_0_1() { return cFrequencyRandomVariableEStringParserRuleCall_3_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class DependencyRelationshipElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DependencyRelationship");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDependencyRelationshipKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cSurroundingEntityKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cSurroundingEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0 = (CrossReference)cSurroundingEntityAssignment_3.eContents().get(0);
+		private final RuleCall cSurroundingEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1 = (RuleCall)cSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0.eContents().get(1);
+		private final Keyword cInfluencedVariableKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cInfluencedVariableAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cInfluencedVariableInfluencedVariableCrossReference_5_0 = (CrossReference)cInfluencedVariableAssignment_5.eContents().get(0);
+		private final RuleCall cInfluencedVariableInfluencedVariableEStringParserRuleCall_5_0_1 = (RuleCall)cInfluencedVariableInfluencedVariableCrossReference_5_0.eContents().get(1);
+		private final Keyword cInfluencingParameterKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cInfluencingParameterAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final CrossReference cInfluencingParameterInfluencingParameterCrossReference_7_0 = (CrossReference)cInfluencingParameterAssignment_7.eContents().get(0);
+		private final RuleCall cInfluencingParameterInfluencingParameterEStringParserRuleCall_7_0_1 = (RuleCall)cInfluencingParameterInfluencingParameterCrossReference_7_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//DependencyRelationship:
+		//	"DependencyRelationship" "{" "surroundingEntity"
+		//	surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "influencedVariable"
+		//	influencedVariable=[InfluencedVariable|EString] "influencingParameter"
+		//	influencingParameter=[InfluencingParameter|EString] "}";
+		public ParserRule getRule() { return rule; }
+
+		//"DependencyRelationship" "{" "surroundingEntity"
+		//surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "influencedVariable"
+		//influencedVariable=[InfluencedVariable|EString] "influencingParameter"
+		//influencingParameter=[InfluencingParameter|EString] "}"
+		public Group getGroup() { return cGroup; }
+
+		//"DependencyRelationship"
+		public Keyword getDependencyRelationshipKeyword_0() { return cDependencyRelationshipKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"surroundingEntity"
+		public Keyword getSurroundingEntityKeyword_2() { return cSurroundingEntityKeyword_2; }
+
+		//surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+		public Assignment getSurroundingEntityAssignment_3() { return cSurroundingEntityAssignment_3; }
+
+		//[repository::InterfaceProvidingRequiringEntity|EString]
+		public CrossReference getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0() { return cSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0; }
+
+		//EString
+		public RuleCall getSurroundingEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1() { return cSurroundingEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1; }
+
+		//"influencedVariable"
+		public Keyword getInfluencedVariableKeyword_4() { return cInfluencedVariableKeyword_4; }
+
+		//influencedVariable=[InfluencedVariable|EString]
+		public Assignment getInfluencedVariableAssignment_5() { return cInfluencedVariableAssignment_5; }
+
+		//[InfluencedVariable|EString]
+		public CrossReference getInfluencedVariableInfluencedVariableCrossReference_5_0() { return cInfluencedVariableInfluencedVariableCrossReference_5_0; }
+
+		//EString
+		public RuleCall getInfluencedVariableInfluencedVariableEStringParserRuleCall_5_0_1() { return cInfluencedVariableInfluencedVariableEStringParserRuleCall_5_0_1; }
+
+		//"influencingParameter"
+		public Keyword getInfluencingParameterKeyword_6() { return cInfluencingParameterKeyword_6; }
+
+		//influencingParameter=[InfluencingParameter|EString]
+		public Assignment getInfluencingParameterAssignment_7() { return cInfluencingParameterAssignment_7; }
+
+		//[InfluencingParameter|EString]
+		public CrossReference getInfluencingParameterInfluencingParameterCrossReference_7_0() { return cInfluencingParameterInfluencingParameterCrossReference_7_0; }
+
+		//EString
+		public RuleCall getInfluencingParameterInfluencingParameterEStringParserRuleCall_7_0_1() { return cInfluencingParameterInfluencingParameterEStringParserRuleCall_7_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class CorrelationRelationshipElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CorrelationRelationship");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCorrelationRelationshipKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cSurroundingEntityKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cSurroundingEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0 = (CrossReference)cSurroundingEntityAssignment_3.eContents().get(0);
+		private final RuleCall cSurroundingEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1 = (RuleCall)cSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0.eContents().get(1);
+		private final Keyword cLeftInfluencingParameterKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cLeftInfluencingParameterAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cLeftInfluencingParameterInfluencingParameterCrossReference_5_0 = (CrossReference)cLeftInfluencingParameterAssignment_5.eContents().get(0);
+		private final RuleCall cLeftInfluencingParameterInfluencingParameterEStringParserRuleCall_5_0_1 = (RuleCall)cLeftInfluencingParameterInfluencingParameterCrossReference_5_0.eContents().get(1);
+		private final Keyword cRightInfluencingParameterKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cRightInfluencingParameterAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final CrossReference cRightInfluencingParameterInfluencingParameterCrossReference_7_0 = (CrossReference)cRightInfluencingParameterAssignment_7.eContents().get(0);
+		private final RuleCall cRightInfluencingParameterInfluencingParameterEStringParserRuleCall_7_0_1 = (RuleCall)cRightInfluencingParameterInfluencingParameterCrossReference_7_0.eContents().get(1);
+		private final Keyword cLeftComponentInstanceReferenceKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		private final Assignment cLeftComponentInstanceReferenceAssignment_9 = (Assignment)cGroup.eContents().get(9);
+		private final RuleCall cLeftComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_9_0 = (RuleCall)cLeftComponentInstanceReferenceAssignment_9.eContents().get(0);
+		private final Keyword cRightComponentInstanceReferenceKeyword_10 = (Keyword)cGroup.eContents().get(10);
+		private final Assignment cRightComponentInstanceReferenceAssignment_11 = (Assignment)cGroup.eContents().get(11);
+		private final RuleCall cRightComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_11_0 = (RuleCall)cRightComponentInstanceReferenceAssignment_11.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
+		
+		//CorrelationRelationship:
+		//	"CorrelationRelationship" "{" "surroundingEntity"
+		//	surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "leftInfluencingParameter"
+		//	leftInfluencingParameter=[InfluencingParameter|EString] "rightInfluencingParameter"
+		//	rightInfluencingParameter=[InfluencingParameter|EString] "leftComponentInstanceReference"
+		//	leftComponentInstanceReference=ComponentInstanceReference "rightComponentInstanceReference"
+		//	rightComponentInstanceReference=ComponentInstanceReference "}";
+		public ParserRule getRule() { return rule; }
+
+		//"CorrelationRelationship" "{" "surroundingEntity"
+		//surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "leftInfluencingParameter"
+		//leftInfluencingParameter=[InfluencingParameter|EString] "rightInfluencingParameter"
+		//rightInfluencingParameter=[InfluencingParameter|EString] "leftComponentInstanceReference"
+		//leftComponentInstanceReference=ComponentInstanceReference "rightComponentInstanceReference"
+		//rightComponentInstanceReference=ComponentInstanceReference "}"
+		public Group getGroup() { return cGroup; }
+
+		//"CorrelationRelationship"
+		public Keyword getCorrelationRelationshipKeyword_0() { return cCorrelationRelationshipKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//"surroundingEntity"
+		public Keyword getSurroundingEntityKeyword_2() { return cSurroundingEntityKeyword_2; }
+
+		//surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+		public Assignment getSurroundingEntityAssignment_3() { return cSurroundingEntityAssignment_3; }
+
+		//[repository::InterfaceProvidingRequiringEntity|EString]
+		public CrossReference getSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0() { return cSurroundingEntityInterfaceProvidingRequiringEntityCrossReference_3_0; }
+
+		//EString
+		public RuleCall getSurroundingEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1() { return cSurroundingEntityInterfaceProvidingRequiringEntityEStringParserRuleCall_3_0_1; }
+
+		//"leftInfluencingParameter"
+		public Keyword getLeftInfluencingParameterKeyword_4() { return cLeftInfluencingParameterKeyword_4; }
+
+		//leftInfluencingParameter=[InfluencingParameter|EString]
+		public Assignment getLeftInfluencingParameterAssignment_5() { return cLeftInfluencingParameterAssignment_5; }
+
+		//[InfluencingParameter|EString]
+		public CrossReference getLeftInfluencingParameterInfluencingParameterCrossReference_5_0() { return cLeftInfluencingParameterInfluencingParameterCrossReference_5_0; }
+
+		//EString
+		public RuleCall getLeftInfluencingParameterInfluencingParameterEStringParserRuleCall_5_0_1() { return cLeftInfluencingParameterInfluencingParameterEStringParserRuleCall_5_0_1; }
+
+		//"rightInfluencingParameter"
+		public Keyword getRightInfluencingParameterKeyword_6() { return cRightInfluencingParameterKeyword_6; }
+
+		//rightInfluencingParameter=[InfluencingParameter|EString]
+		public Assignment getRightInfluencingParameterAssignment_7() { return cRightInfluencingParameterAssignment_7; }
+
+		//[InfluencingParameter|EString]
+		public CrossReference getRightInfluencingParameterInfluencingParameterCrossReference_7_0() { return cRightInfluencingParameterInfluencingParameterCrossReference_7_0; }
+
+		//EString
+		public RuleCall getRightInfluencingParameterInfluencingParameterEStringParserRuleCall_7_0_1() { return cRightInfluencingParameterInfluencingParameterEStringParserRuleCall_7_0_1; }
+
+		//"leftComponentInstanceReference"
+		public Keyword getLeftComponentInstanceReferenceKeyword_8() { return cLeftComponentInstanceReferenceKeyword_8; }
+
+		//leftComponentInstanceReference=ComponentInstanceReference
+		public Assignment getLeftComponentInstanceReferenceAssignment_9() { return cLeftComponentInstanceReferenceAssignment_9; }
+
+		//ComponentInstanceReference
+		public RuleCall getLeftComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_9_0() { return cLeftComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_9_0; }
+
+		//"rightComponentInstanceReference"
+		public Keyword getRightComponentInstanceReferenceKeyword_10() { return cRightComponentInstanceReferenceKeyword_10; }
+
+		//rightComponentInstanceReference=ComponentInstanceReference
+		public Assignment getRightComponentInstanceReferenceAssignment_11() { return cRightComponentInstanceReferenceAssignment_11; }
+
+		//ComponentInstanceReference
+		public RuleCall getRightComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_11_0() { return cRightComponentInstanceReferenceComponentInstanceReferenceParserRuleCall_11_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
+	}
+
+	public class InfluencedVariableElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InfluencedVariable");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cInfluencedVariableAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cInfluencedVariableKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cControlFlowVariableKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cControlFlowVariableAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cControlFlowVariableControlFlowSpecificationCrossReference_3_1_0 = (CrossReference)cControlFlowVariableAssignment_3_1.eContents().get(0);
+		private final RuleCall cControlFlowVariableControlFlowSpecificationEStringParserRuleCall_3_1_0_1 = (RuleCall)cControlFlowVariableControlFlowSpecificationCrossReference_3_1_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cResourceDemandKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cResourceDemandAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final CrossReference cResourceDemandResourceDemandSpecificationCrossReference_4_1_0 = (CrossReference)cResourceDemandAssignment_4_1.eContents().get(0);
+		private final RuleCall cResourceDemandResourceDemandSpecificationEStringParserRuleCall_4_1_0_1 = (RuleCall)cResourceDemandResourceDemandSpecificationCrossReference_4_1_0.eContents().get(1);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cResponseTimeKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Assignment cResponseTimeAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final CrossReference cResponseTimeResponseTimeSpecificationCrossReference_5_1_0 = (CrossReference)cResponseTimeAssignment_5_1.eContents().get(0);
+		private final RuleCall cResponseTimeResponseTimeSpecificationEStringParserRuleCall_5_1_0_1 = (RuleCall)cResponseTimeResponseTimeSpecificationCrossReference_5_1_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//InfluencedVariable:
+		//	{InfluencedVariable} "InfluencedVariable" "{" ("controlFlowVariable"
+		//	controlFlowVariable=[ControlFlowSpecification|EString])? ("resourceDemand"
+		//	resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])? ("responseTime"
+		//	responseTime=[servicebehavior::ResponseTimeSpecification|EString])? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{InfluencedVariable} "InfluencedVariable" "{" ("controlFlowVariable"
+		//controlFlowVariable=[ControlFlowSpecification|EString])? ("resourceDemand"
+		//resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])? ("responseTime"
+		//responseTime=[servicebehavior::ResponseTimeSpecification|EString])? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{InfluencedVariable}
+		public Action getInfluencedVariableAction_0() { return cInfluencedVariableAction_0; }
+
+		//"InfluencedVariable"
+		public Keyword getInfluencedVariableKeyword_1() { return cInfluencedVariableKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("controlFlowVariable" controlFlowVariable=[ControlFlowSpecification|EString])?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"controlFlowVariable"
+		public Keyword getControlFlowVariableKeyword_3_0() { return cControlFlowVariableKeyword_3_0; }
+
+		//controlFlowVariable=[ControlFlowSpecification|EString]
+		public Assignment getControlFlowVariableAssignment_3_1() { return cControlFlowVariableAssignment_3_1; }
+
+		//[ControlFlowSpecification|EString]
+		public CrossReference getControlFlowVariableControlFlowSpecificationCrossReference_3_1_0() { return cControlFlowVariableControlFlowSpecificationCrossReference_3_1_0; }
+
+		//EString
+		public RuleCall getControlFlowVariableControlFlowSpecificationEStringParserRuleCall_3_1_0_1() { return cControlFlowVariableControlFlowSpecificationEStringParserRuleCall_3_1_0_1; }
+
+		//("resourceDemand" resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"resourceDemand"
+		public Keyword getResourceDemandKeyword_4_0() { return cResourceDemandKeyword_4_0; }
+
+		//resourceDemand=[servicebehavior::ResourceDemandSpecification|EString]
+		public Assignment getResourceDemandAssignment_4_1() { return cResourceDemandAssignment_4_1; }
+
+		//[servicebehavior::ResourceDemandSpecification|EString]
+		public CrossReference getResourceDemandResourceDemandSpecificationCrossReference_4_1_0() { return cResourceDemandResourceDemandSpecificationCrossReference_4_1_0; }
+
+		//EString
+		public RuleCall getResourceDemandResourceDemandSpecificationEStringParserRuleCall_4_1_0_1() { return cResourceDemandResourceDemandSpecificationEStringParserRuleCall_4_1_0_1; }
+
+		//("responseTime" responseTime=[servicebehavior::ResponseTimeSpecification|EString])?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"responseTime"
+		public Keyword getResponseTimeKeyword_5_0() { return cResponseTimeKeyword_5_0; }
+
+		//responseTime=[servicebehavior::ResponseTimeSpecification|EString]
+		public Assignment getResponseTimeAssignment_5_1() { return cResponseTimeAssignment_5_1; }
+
+		//[servicebehavior::ResponseTimeSpecification|EString]
+		public CrossReference getResponseTimeResponseTimeSpecificationCrossReference_5_1_0() { return cResponseTimeResponseTimeSpecificationCrossReference_5_1_0; }
+
+		//EString
+		public RuleCall getResponseTimeResponseTimeSpecificationEStringParserRuleCall_5_1_0_1() { return cResponseTimeResponseTimeSpecificationEStringParserRuleCall_5_1_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class ComponentInstanceReferenceElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ComponentInstanceReference");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cComponentInstanceReferenceAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cComponentInstanceReferenceKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cAssembliesKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cAssembliesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final CrossReference cAssembliesAssemblyContextCrossReference_3_2_0 = (CrossReference)cAssembliesAssignment_3_2.eContents().get(0);
+		private final RuleCall cAssembliesAssemblyContextEStringParserRuleCall_3_2_0_1 = (RuleCall)cAssembliesAssemblyContextCrossReference_3_2_0.eContents().get(1);
+		private final Group cGroup_3_3 = (Group)cGroup_3.eContents().get(3);
+		private final Keyword cCommaKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cAssembliesAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final CrossReference cAssembliesAssemblyContextCrossReference_3_3_1_0 = (CrossReference)cAssembliesAssignment_3_3_1.eContents().get(0);
+		private final RuleCall cAssembliesAssemblyContextEStringParserRuleCall_3_3_1_0_1 = (RuleCall)cAssembliesAssemblyContextCrossReference_3_3_1_0.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_3_4 = (Keyword)cGroup_3.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ComponentInstanceReference:
+		//	{ComponentInstanceReference} "ComponentInstanceReference" "{" ("assemblies" "("
+		//	assemblies+=[repository::AssemblyContext|EString] ("," assemblies+=[repository::AssemblyContext|EString])* ")")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{ComponentInstanceReference} "ComponentInstanceReference" "{" ("assemblies" "("
+		//assemblies+=[repository::AssemblyContext|EString] ("," assemblies+=[repository::AssemblyContext|EString])* ")")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{ComponentInstanceReference}
+		public Action getComponentInstanceReferenceAction_0() { return cComponentInstanceReferenceAction_0; }
+
+		//"ComponentInstanceReference"
+		public Keyword getComponentInstanceReferenceKeyword_1() { return cComponentInstanceReferenceKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("assemblies" "(" assemblies+=[repository::AssemblyContext|EString] (","
+		//assemblies+=[repository::AssemblyContext|EString])* ")")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"assemblies"
+		public Keyword getAssembliesKeyword_3_0() { return cAssembliesKeyword_3_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_3_1() { return cLeftParenthesisKeyword_3_1; }
+
+		//assemblies+=[repository::AssemblyContext|EString]
+		public Assignment getAssembliesAssignment_3_2() { return cAssembliesAssignment_3_2; }
+
+		//[repository::AssemblyContext|EString]
+		public CrossReference getAssembliesAssemblyContextCrossReference_3_2_0() { return cAssembliesAssemblyContextCrossReference_3_2_0; }
+
+		//EString
+		public RuleCall getAssembliesAssemblyContextEStringParserRuleCall_3_2_0_1() { return cAssembliesAssemblyContextEStringParserRuleCall_3_2_0_1; }
+
+		//("," assemblies+=[repository::AssemblyContext|EString])*
+		public Group getGroup_3_3() { return cGroup_3_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_3_0() { return cCommaKeyword_3_3_0; }
+
+		//assemblies+=[repository::AssemblyContext|EString]
+		public Assignment getAssembliesAssignment_3_3_1() { return cAssembliesAssignment_3_3_1; }
+
+		//[repository::AssemblyContext|EString]
+		public CrossReference getAssembliesAssemblyContextCrossReference_3_3_1_0() { return cAssembliesAssemblyContextCrossReference_3_3_1_0; }
+
+		//EString
+		public RuleCall getAssembliesAssemblyContextEStringParserRuleCall_3_3_1_0_1() { return cAssembliesAssemblyContextEStringParserRuleCall_3_3_1_0_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3_4() { return cRightParenthesisKeyword_3_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+	
+	
+	public class PrimitiveTypeEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "PrimitiveTypeEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cINTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cINTINTKeyword_0_0 = (Keyword)cINTEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cSTRINGEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cSTRINGSTRINGKeyword_1_0 = (Keyword)cSTRINGEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cBOOLEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cBOOLBOOLKeyword_2_0 = (Keyword)cBOOLEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cDOUBLEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cDOUBLEDOUBLEKeyword_3_0 = (Keyword)cDOUBLEEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cCHAREnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cCHARCHARKeyword_4_0 = (Keyword)cCHAREnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cBYTEEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cBYTEBYTEKeyword_5_0 = (Keyword)cBYTEEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cLONGEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cLONGLONGKeyword_6_0 = (Keyword)cLONGEnumLiteralDeclaration_6.eContents().get(0);
+		
+		//enum PrimitiveTypeEnum returns repository::PrimitiveTypeEnum:
+		//	INT | STRING | BOOL | DOUBLE | CHAR | BYTE | LONG;
+		public EnumRule getRule() { return rule; }
+
+		//INT | STRING | BOOL | DOUBLE | CHAR | BYTE | LONG
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//INT
+		public EnumLiteralDeclaration getINTEnumLiteralDeclaration_0() { return cINTEnumLiteralDeclaration_0; }
+
+		//"INT"
+		public Keyword getINTINTKeyword_0_0() { return cINTINTKeyword_0_0; }
+
+		//STRING
+		public EnumLiteralDeclaration getSTRINGEnumLiteralDeclaration_1() { return cSTRINGEnumLiteralDeclaration_1; }
+
+		//"STRING"
+		public Keyword getSTRINGSTRINGKeyword_1_0() { return cSTRINGSTRINGKeyword_1_0; }
+
+		//BOOL
+		public EnumLiteralDeclaration getBOOLEnumLiteralDeclaration_2() { return cBOOLEnumLiteralDeclaration_2; }
+
+		//"BOOL"
+		public Keyword getBOOLBOOLKeyword_2_0() { return cBOOLBOOLKeyword_2_0; }
+
+		//DOUBLE
+		public EnumLiteralDeclaration getDOUBLEEnumLiteralDeclaration_3() { return cDOUBLEEnumLiteralDeclaration_3; }
+
+		//"DOUBLE"
+		public Keyword getDOUBLEDOUBLEKeyword_3_0() { return cDOUBLEDOUBLEKeyword_3_0; }
+
+		//CHAR
+		public EnumLiteralDeclaration getCHAREnumLiteralDeclaration_4() { return cCHAREnumLiteralDeclaration_4; }
+
+		//"CHAR"
+		public Keyword getCHARCHARKeyword_4_0() { return cCHARCHARKeyword_4_0; }
+
+		//BYTE
+		public EnumLiteralDeclaration getBYTEEnumLiteralDeclaration_5() { return cBYTEEnumLiteralDeclaration_5; }
+
+		//"BYTE"
+		public Keyword getBYTEBYTEKeyword_5_0() { return cBYTEBYTEKeyword_5_0; }
+
+		//LONG
+		public EnumLiteralDeclaration getLONGEnumLiteralDeclaration_6() { return cLONGEnumLiteralDeclaration_6; }
+
+		//"LONG"
+		public Keyword getLONGLONGKeyword_6_0() { return cLONGLONGKeyword_6_0; }
+	}
+
+	public class ParameterModifierElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ParameterModifier");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cNONEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cNONENONEKeyword_0_0 = (Keyword)cNONEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cINEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cININKeyword_1_0 = (Keyword)cINEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cOUTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cOUTOUTKeyword_2_0 = (Keyword)cOUTEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cINOUTEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cINOUTINOUTKeyword_3_0 = (Keyword)cINOUTEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum ParameterModifier returns repository::ParameterModifier:
+		//	NONE | IN | OUT | INOUT;
+		public EnumRule getRule() { return rule; }
+
+		//NONE | IN | OUT | INOUT
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//NONE
+		public EnumLiteralDeclaration getNONEEnumLiteralDeclaration_0() { return cNONEEnumLiteralDeclaration_0; }
+
+		//"NONE"
+		public Keyword getNONENONEKeyword_0_0() { return cNONENONEKeyword_0_0; }
+
+		//IN
+		public EnumLiteralDeclaration getINEnumLiteralDeclaration_1() { return cINEnumLiteralDeclaration_1; }
+
+		//"IN"
+		public Keyword getININKeyword_1_0() { return cININKeyword_1_0; }
+
+		//OUT
+		public EnumLiteralDeclaration getOUTEnumLiteralDeclaration_2() { return cOUTEnumLiteralDeclaration_2; }
+
+		//"OUT"
+		public Keyword getOUTOUTKeyword_2_0() { return cOUTOUTKeyword_2_0; }
+
+		//INOUT
+		public EnumLiteralDeclaration getINOUTEnumLiteralDeclaration_3() { return cINOUTEnumLiteralDeclaration_3; }
+
+		//"INOUT"
+		public Keyword getINOUTINOUTKeyword_3_0() { return cINOUTINOUTKeyword_3_0; }
+	}
+
+	public class CharacterizationTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CharacterizationType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cVALUEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cVALUEVALUEKeyword_0_0 = (Keyword)cVALUEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cNUMBER_OF_ELEMENTSNUMBER_OF_ELEMENTSKeyword_1_0 = (Keyword)cNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum CharacterizationType:
+		//	VALUE | NUMBER_OF_ELEMENTS;
+		public EnumRule getRule() { return rule; }
+
+		//VALUE | NUMBER_OF_ELEMENTS
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//VALUE
+		public EnumLiteralDeclaration getVALUEEnumLiteralDeclaration_0() { return cVALUEEnumLiteralDeclaration_0; }
+
+		//"VALUE"
+		public Keyword getVALUEVALUEKeyword_0_0() { return cVALUEVALUEKeyword_0_0; }
+
+		//NUMBER_OF_ELEMENTS
+		public EnumLiteralDeclaration getNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1() { return cNUMBER_OF_ELEMENTSEnumLiteralDeclaration_1; }
+
+		//"NUMBER_OF_ELEMENTS"
+		public Keyword getNUMBER_OF_ELEMENTSNUMBER_OF_ELEMENTSKeyword_1_0() { return cNUMBER_OF_ELEMENTSNUMBER_OF_ELEMENTSKeyword_1_0; }
+	}
+	
+	private RepositoryElements pRepository;
+	private DataTypeElements pDataType;
+	private RepositoryComponentElements pRepositoryComponent;
+	private RelationshipElements pRelationship;
+	private InfluencingParameterElements pInfluencingParameter;
+	private InterfaceProvidingEntityElements pInterfaceProvidingEntity;
+	private InterfaceProvidingRequiringEntityElements pInterfaceProvidingRequiringEntity;
+	private ServiceBehaviorAbstractionElements pServiceBehaviorAbstraction;
+	private ExternalCallElements pExternalCall;
+	private AbstractActionElements pAbstractAction;
+	private ComponentInternalBehaviorElements pComponentInternalBehavior;
+	private ProcessingResourceTypeElements pProcessingResourceType;
+	private ProbabilityFunctionElements pProbabilityFunction;
+	private EStringElements pEString;
+	private InterfaceElements pInterface;
+	private RepositoryComponent_ImplElements pRepositoryComponent_Impl;
+	private CollectionDataTypeElements pCollectionDataType;
+	private CompositeDataTypeElements pCompositeDataType;
+	private PrimitiveDataTypeElements pPrimitiveDataType;
+	private InnerDeclarationElements pInnerDeclaration;
+	private PrimitiveTypeEnumElements unknownRulePrimitiveTypeEnum;
+	private SignatureElements pSignature;
+	private ParameterElements pParameter;
+	private ParameterModifierElements unknownRuleParameterModifier;
+	private ProvidedRoleElements pProvidedRole;
+	private BlackBoxBehaviorElements pBlackBoxBehavior;
+	private RequiredRoleElements pRequiredRole;
+	private CoarseGrainedBehaviorElements pCoarseGrainedBehavior;
+	private BasicComponentElements pBasicComponent;
+	private CompositeComponentElements pCompositeComponent;
+	private SubSystemElements pSubSystem;
+	private InfluencingParameter_ImplElements pInfluencingParameter_Impl;
+	private ResponseTimeSpecificationElements pResponseTimeSpecification;
+	private ScopeElements pScope;
+	private ServiceInputParameterElements pServiceInputParameter;
+	private ExternalCallReturnParameterElements pExternalCallReturnParameter;
+	private ExternalCallParameterElements pExternalCallParameter;
+	private FineGrainedBehaviorElements pFineGrainedBehavior;
+	private AbstractAction_ImplElements pAbstractAction_Impl;
+	private ComponentInternalBehavior_ImplElements pComponentInternalBehavior_Impl;
+	private StartActionElements pStartAction;
+	private StopActionElements pStopAction;
+	private AcquireActionElements pAcquireAction;
+	private ReleaseActionElements pReleaseAction;
+	private InternalActionElements pInternalAction;
+	private ForkActionElements pForkAction;
+	private BranchActionElements pBranchAction;
+	private LoopActionElements pLoopAction;
+	private ExternalCallActionElements pExternalCallAction;
+	private PassiveResourceSpecificationElements pPassiveResourceSpecification;
+	private PassiveResourceCapacityElements pPassiveResourceCapacity;
+	private PassiveResourceTypeElements pPassiveResourceType;
+	private EBigIntegerElements pEBigInteger;
+	private ResourceDemandSpecificationElements pResourceDemandSpecification;
+	private ProcessingResourceType_ImplElements pProcessingResourceType_Impl;
+	private CommunicationLinkResourceTypeElements pCommunicationLinkResourceType;
+	private EBooleanElements pEBoolean;
+	private BranchTransitionElements pBranchTransition;
+	private BranchProbabilitiesElements pBranchProbabilities;
+	private RandomVariableElements pRandomVariable;
+	private ProbabilityMassFunctionElements pProbabilityMassFunction;
+	private ProbabilityDensityFunction_ImplElements pProbabilityDensityFunction_Impl;
+	private BoxedPDFElements pBoxedPDF;
+	private ContinuousPDF_ImplElements pContinuousPDF_Impl;
+	private NormalDistributionElements pNormalDistribution;
+	private ExponentialDistributionElements pExponentialDistribution;
+	private SampleElements pSample;
+	private EObjectElements pEObject;
+	private EBigDecimalElements pEBigDecimal;
+	private ContinuousSampleElements pContinuousSample;
+	private LoopIterationCountDistributionElements pLoopIterationCountDistribution;
+	private AssemblyContextElements pAssemblyContext;
+	private AssemblyConnectorElements pAssemblyConnector;
+	private ProvidedDelegationConnectorElements pProvidedDelegationConnector;
+	private RequiredDelegationConnectorElements pRequiredDelegationConnector;
+	private CharacterizationTypeElements unknownRuleCharacterizationType;
+	private ExternalCall_ImplElements pExternalCall_Impl;
+	private ExternalCallFrequencyElements pExternalCallFrequency;
+	private CallFrequencyElements pCallFrequency;
+	private DependencyRelationshipElements pDependencyRelationship;
+	private CorrelationRelationshipElements pCorrelationRelationship;
+	private InfluencedVariableElements pInfluencedVariable;
+	private ComponentInstanceReferenceElements pComponentInstanceReference;
+	
+	private final GrammarProvider grammarProvider;
+
+	private TerminalsGrammarAccess gaTerminals;
+
+	@Inject
+	public RepositoryDSLGrammarAccess(GrammarProvider grammarProvider,
+		TerminalsGrammarAccess gaTerminals) {
+		this.grammarProvider = grammarProvider;
+		this.gaTerminals = gaTerminals;
+	}
+	
+	public Grammar getGrammar() {	
+		return grammarProvider.getGrammar(this);
+	}
+	
+
+	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
+		return gaTerminals;
+	}
+
+	
+	//Repository returns repository::Repository:
+	//	"Repository" id=EString "{" "name" name=EString ("datatypes" "{" datatypes+=DataType ("," datatypes+=DataType)* "}")?
+	//	("interfaces" "{" interfaces+=Interface ("," interfaces+=Interface)* "}")? ("components" "{"
+	//	components+=RepositoryComponent ("," components+=RepositoryComponent)* "}")? "}";
+	public RepositoryElements getRepositoryAccess() {
+		return (pRepository != null) ? pRepository : (pRepository = new RepositoryElements());
+	}
+	
+	public ParserRule getRepositoryRule() {
+		return getRepositoryAccess().getRule();
+	}
+
+	//DataType returns repository::DataType:
+	//	CollectionDataType | CompositeDataType | PrimitiveDataType;
+	public DataTypeElements getDataTypeAccess() {
+		return (pDataType != null) ? pDataType : (pDataType = new DataTypeElements());
+	}
+	
+	public ParserRule getDataTypeRule() {
+		return getDataTypeAccess().getRule();
+	}
+
+	//RepositoryComponent returns repository::RepositoryComponent:
+	//	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+	public RepositoryComponentElements getRepositoryComponentAccess() {
+		return (pRepositoryComponent != null) ? pRepositoryComponent : (pRepositoryComponent = new RepositoryComponentElements());
+	}
+	
+	public ParserRule getRepositoryComponentRule() {
+		return getRepositoryComponentAccess().getRule();
+	}
+
+	//Relationship:
+	//	DependencyRelationship | CorrelationRelationship;
+	public RelationshipElements getRelationshipAccess() {
+		return (pRelationship != null) ? pRelationship : (pRelationship = new RelationshipElements());
+	}
+	
+	public ParserRule getRelationshipRule() {
+		return getRelationshipAccess().getRule();
+	}
+
+	//InfluencingParameter:
+	//	InfluencingParameter_Impl | ServiceInputParameter | ExternalCallReturnParameter | ExternalCallParameter;
+	public InfluencingParameterElements getInfluencingParameterAccess() {
+		return (pInfluencingParameter != null) ? pInfluencingParameter : (pInfluencingParameter = new InfluencingParameterElements());
+	}
+	
+	public ParserRule getInfluencingParameterRule() {
+		return getInfluencingParameterAccess().getRule();
+	}
+
+	//InterfaceProvidingEntity returns repository::InterfaceProvidingEntity:
+	//	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+	public InterfaceProvidingEntityElements getInterfaceProvidingEntityAccess() {
+		return (pInterfaceProvidingEntity != null) ? pInterfaceProvidingEntity : (pInterfaceProvidingEntity = new InterfaceProvidingEntityElements());
+	}
+	
+	public ParserRule getInterfaceProvidingEntityRule() {
+		return getInterfaceProvidingEntityAccess().getRule();
+	}
+
+	//InterfaceProvidingRequiringEntity returns repository::InterfaceProvidingRequiringEntity:
+	//	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+	public InterfaceProvidingRequiringEntityElements getInterfaceProvidingRequiringEntityAccess() {
+		return (pInterfaceProvidingRequiringEntity != null) ? pInterfaceProvidingRequiringEntity : (pInterfaceProvidingRequiringEntity = new InterfaceProvidingRequiringEntityElements());
+	}
+	
+	public ParserRule getInterfaceProvidingRequiringEntityRule() {
+		return getInterfaceProvidingRequiringEntityAccess().getRule();
+	}
+
+	//ServiceBehaviorAbstraction returns servicebehavior::ServiceBehaviorAbstraction:
+	//	FineGrainedBehavior | CoarseGrainedBehavior | BlackBoxBehavior;
+	public ServiceBehaviorAbstractionElements getServiceBehaviorAbstractionAccess() {
+		return (pServiceBehaviorAbstraction != null) ? pServiceBehaviorAbstraction : (pServiceBehaviorAbstraction = new ServiceBehaviorAbstractionElements());
+	}
+	
+	public ParserRule getServiceBehaviorAbstractionRule() {
+		return getServiceBehaviorAbstractionAccess().getRule();
+	}
+
+	//ExternalCall returns servicebehavior::ExternalCall:
+	//	ExternalCall_Impl | ExternalCallAction;
+	public ExternalCallElements getExternalCallAccess() {
+		return (pExternalCall != null) ? pExternalCall : (pExternalCall = new ExternalCallElements());
+	}
+	
+	public ParserRule getExternalCallRule() {
+		return getExternalCallAccess().getRule();
+	}
+
+	//AbstractAction returns servicebehavior::AbstractAction:
+	//	AbstractAction_Impl | StartAction | StopAction | AcquireAction | ReleaseAction | InternalAction | ForkAction |
+	//	BranchAction | LoopAction | ExternalCallAction;
+	public AbstractActionElements getAbstractActionAccess() {
+		return (pAbstractAction != null) ? pAbstractAction : (pAbstractAction = new AbstractActionElements());
+	}
+	
+	public ParserRule getAbstractActionRule() {
+		return getAbstractActionAccess().getRule();
+	}
+
+	//ComponentInternalBehavior returns servicebehavior::ComponentInternalBehavior:
+	//	ComponentInternalBehavior_Impl | FineGrainedBehavior;
+	public ComponentInternalBehaviorElements getComponentInternalBehaviorAccess() {
+		return (pComponentInternalBehavior != null) ? pComponentInternalBehavior : (pComponentInternalBehavior = new ComponentInternalBehaviorElements());
+	}
+	
+	public ParserRule getComponentInternalBehaviorRule() {
+		return getComponentInternalBehaviorAccess().getRule();
+	}
+
+	//ProcessingResourceType returns resourcetype::ProcessingResourceType:
+	//	ProcessingResourceType_Impl | CommunicationLinkResourceType;
+	public ProcessingResourceTypeElements getProcessingResourceTypeAccess() {
+		return (pProcessingResourceType != null) ? pProcessingResourceType : (pProcessingResourceType = new ProcessingResourceTypeElements());
+	}
+	
+	public ParserRule getProcessingResourceTypeRule() {
+		return getProcessingResourceTypeAccess().getRule();
+	}
+
+	//ProbabilityFunction returns functions::ProbabilityFunction:
+	//	ProbabilityMassFunction | ProbabilityDensityFunction_Impl | BoxedPDF | ContinuousPDF_Impl | NormalDistribution |
+	//	ExponentialDistribution;
+	public ProbabilityFunctionElements getProbabilityFunctionAccess() {
+		return (pProbabilityFunction != null) ? pProbabilityFunction : (pProbabilityFunction = new ProbabilityFunctionElements());
+	}
+	
+	public ParserRule getProbabilityFunctionRule() {
+		return getProbabilityFunctionAccess().getRule();
+	}
+
+	//EString returns ecore::EString:
+	//	STRING | ID;
+	public EStringElements getEStringAccess() {
+		return (pEString != null) ? pEString : (pEString = new EStringElements());
+	}
+	
+	public ParserRule getEStringRule() {
+		return getEStringAccess().getRule();
+	}
+
+	//Interface returns repository::Interface:
+	//	"Interface" id=EString "{" "name" name=EString ("parentInterfaces" "("
+	//	parentInterfaces+=[repository::Interface|EString] ("," parentInterfaces+=[repository::Interface|EString])* ")")?
+	//	("signatures" "{" signatures+=Signature ("," signatures+=Signature)* "}")? "}";
+	public InterfaceElements getInterfaceAccess() {
+		return (pInterface != null) ? pInterface : (pInterface = new InterfaceElements());
+	}
+	
+	public ParserRule getInterfaceRule() {
+		return getInterfaceAccess().getRule();
+	}
+
+	//RepositoryComponent_Impl returns repository::RepositoryComponent:
+	//	"RepositoryComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+	//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+	//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+	//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+	//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+	//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? "}";
+	public RepositoryComponent_ImplElements getRepositoryComponent_ImplAccess() {
+		return (pRepositoryComponent_Impl != null) ? pRepositoryComponent_Impl : (pRepositoryComponent_Impl = new RepositoryComponent_ImplElements());
+	}
+	
+	public ParserRule getRepositoryComponent_ImplRule() {
+		return getRepositoryComponent_ImplAccess().getRule();
+	}
+
+	//CollectionDataType returns repository::CollectionDataType:
+	//	"CollectionDataType" id=EString "{" "name" name=EString "innerType" innerType=[repository::DataType|EString] "}";
+	public CollectionDataTypeElements getCollectionDataTypeAccess() {
+		return (pCollectionDataType != null) ? pCollectionDataType : (pCollectionDataType = new CollectionDataTypeElements());
+	}
+	
+	public ParserRule getCollectionDataTypeRule() {
+		return getCollectionDataTypeAccess().getRule();
+	}
+
+	//CompositeDataType returns repository::CompositeDataType:
+	//	"CompositeDataType" id=EString "{" "name" name=EString ("parentTypes" "("
+	//	parentTypes+=[repository::CompositeDataType|EString] ("," parentTypes+=[repository::CompositeDataType|EString])* ")")?
+	//	("innerDeclarations" "{" innerDeclarations+=InnerDeclaration ("," innerDeclarations+=InnerDeclaration)* "}")? "}";
+	public CompositeDataTypeElements getCompositeDataTypeAccess() {
+		return (pCompositeDataType != null) ? pCompositeDataType : (pCompositeDataType = new CompositeDataTypeElements());
+	}
+	
+	public ParserRule getCompositeDataTypeRule() {
+		return getCompositeDataTypeAccess().getRule();
+	}
+
+	//PrimitiveDataType returns repository::PrimitiveDataType:
+	//	"PrimitiveDataType" "{" "type" type=PrimitiveTypeEnum "}";
+	public PrimitiveDataTypeElements getPrimitiveDataTypeAccess() {
+		return (pPrimitiveDataType != null) ? pPrimitiveDataType : (pPrimitiveDataType = new PrimitiveDataTypeElements());
+	}
+	
+	public ParserRule getPrimitiveDataTypeRule() {
+		return getPrimitiveDataTypeAccess().getRule();
+	}
+
+	//InnerDeclaration returns repository::InnerDeclaration:
+	//	"InnerDeclaration" id=EString "{" "name" name=EString "dataType" dataType=[repository::DataType|EString] "}";
+	public InnerDeclarationElements getInnerDeclarationAccess() {
+		return (pInnerDeclaration != null) ? pInnerDeclaration : (pInnerDeclaration = new InnerDeclarationElements());
+	}
+	
+	public ParserRule getInnerDeclarationRule() {
+		return getInnerDeclarationAccess().getRule();
+	}
+
+	//enum PrimitiveTypeEnum returns repository::PrimitiveTypeEnum:
+	//	INT | STRING | BOOL | DOUBLE | CHAR | BYTE | LONG;
+	public PrimitiveTypeEnumElements getPrimitiveTypeEnumAccess() {
+		return (unknownRulePrimitiveTypeEnum != null) ? unknownRulePrimitiveTypeEnum : (unknownRulePrimitiveTypeEnum = new PrimitiveTypeEnumElements());
+	}
+	
+	public EnumRule getPrimitiveTypeEnumRule() {
+		return getPrimitiveTypeEnumAccess().getRule();
+	}
+
+	//Signature returns repository::Signature:
+	//	"Signature" id=EString "{" "name" name=EString ("returnType" returnType=[repository::DataType|EString])? ("parameters"
+	//	"{" parameters+=Parameter ("," parameters+=Parameter)* "}")? "}";
+	public SignatureElements getSignatureAccess() {
+		return (pSignature != null) ? pSignature : (pSignature = new SignatureElements());
+	}
+	
+	public ParserRule getSignatureRule() {
+		return getSignatureAccess().getRule();
+	}
+
+	//Parameter returns repository::Parameter:
+	//	"Parameter" name=EString "{" "modifier" modifier=ParameterModifier "dataType" dataType=[repository::DataType|EString]
+	//	"}";
+	public ParameterElements getParameterAccess() {
+		return (pParameter != null) ? pParameter : (pParameter = new ParameterElements());
+	}
+	
+	public ParserRule getParameterRule() {
+		return getParameterAccess().getRule();
+	}
+
+	//enum ParameterModifier returns repository::ParameterModifier:
+	//	NONE | IN | OUT | INOUT;
+	public ParameterModifierElements getParameterModifierAccess() {
+		return (unknownRuleParameterModifier != null) ? unknownRuleParameterModifier : (unknownRuleParameterModifier = new ParameterModifierElements());
+	}
+	
+	public EnumRule getParameterModifierRule() {
+		return getParameterModifierAccess().getRule();
+	}
+
+	//ProvidedRole returns repository::ProvidedRole:
+	//	"ProvidedRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}";
+	public ProvidedRoleElements getProvidedRoleAccess() {
+		return (pProvidedRole != null) ? pProvidedRole : (pProvidedRole = new ProvidedRoleElements());
+	}
+	
+	public ParserRule getProvidedRoleRule() {
+		return getProvidedRoleAccess().getRule();
+	}
+
+	//BlackBoxBehavior returns servicebehavior::BlackBoxBehavior:
+	//	"BlackBoxBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "describedEntity"
+	//	describedEntity=[repository::InterfaceProvidingEntity|EString] ("influencingParameter" "{"
+	//	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+	//	("responseTimeSpecification" responseTimeSpecification=ResponseTimeSpecification)? "}";
+	public BlackBoxBehaviorElements getBlackBoxBehaviorAccess() {
+		return (pBlackBoxBehavior != null) ? pBlackBoxBehavior : (pBlackBoxBehavior = new BlackBoxBehaviorElements());
+	}
+	
+	public ParserRule getBlackBoxBehaviorRule() {
+		return getBlackBoxBehaviorAccess().getRule();
+	}
+
+	//RequiredRole returns repository::RequiredRole:
+	//	"RequiredRole" id=EString "{" "name" name=EString "interface" interface=[repository::Interface|EString] "}";
+	public RequiredRoleElements getRequiredRoleAccess() {
+		return (pRequiredRole != null) ? pRequiredRole : (pRequiredRole = new RequiredRoleElements());
+	}
+	
+	public ParserRule getRequiredRoleRule() {
+		return getRequiredRoleAccess().getRule();
+	}
+
+	//CoarseGrainedBehavior returns servicebehavior::CoarseGrainedBehavior:
+	//	"CoarseGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])?
+	//	"describedEntity" describedEntity=[repository::InterfaceProvidingRequiringEntity|EString] ("influencingParameter" "{"
+	//	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")?
+	//	("externalCallFrequency" "{" externalCallFrequency+=ExternalCallFrequency (","
+	//	externalCallFrequency+=ExternalCallFrequency)* "}")? ("resourceDemandSpecification" "{"
+	//	resourceDemandSpecification+=ResourceDemandSpecification (","
+	//	resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}";
+	public CoarseGrainedBehaviorElements getCoarseGrainedBehaviorAccess() {
+		return (pCoarseGrainedBehavior != null) ? pCoarseGrainedBehavior : (pCoarseGrainedBehavior = new CoarseGrainedBehaviorElements());
+	}
+	
+	public ParserRule getCoarseGrainedBehaviorRule() {
+		return getCoarseGrainedBehaviorAccess().getRule();
+	}
+
+	//BasicComponent returns repository::BasicComponent:
+	//	"BasicComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+	//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+	//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+	//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+	//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+	//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("passiveResources" "{"
+	//	passiveResources+=PassiveResourceSpecification ("," passiveResources+=PassiveResourceSpecification)* "}")?
+	//	("fineGrainedBehavior" "{" fineGrainedBehavior+=FineGrainedBehavior ("," fineGrainedBehavior+=FineGrainedBehavior)*
+	//	"}")? "}";
+	public BasicComponentElements getBasicComponentAccess() {
+		return (pBasicComponent != null) ? pBasicComponent : (pBasicComponent = new BasicComponentElements());
+	}
+	
+	public ParserRule getBasicComponentRule() {
+		return getBasicComponentAccess().getRule();
+	}
+
+	//CompositeComponent returns repository::CompositeComponent:
+	//	"CompositeComponent" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+	//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+	//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+	//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+	//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+	//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+	//	assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+	//	assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+	//	providedDelegationConnectors+=ProvidedDelegationConnector (","
+	//	providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+	//	requiredDelegationConnectors+=RequiredDelegationConnector (","
+	//	requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}";
+	public CompositeComponentElements getCompositeComponentAccess() {
+		return (pCompositeComponent != null) ? pCompositeComponent : (pCompositeComponent = new CompositeComponentElements());
+	}
+	
+	public ParserRule getCompositeComponentRule() {
+		return getCompositeComponentAccess().getRule();
+	}
+
+	//SubSystem returns repository::SubSystem:
+	//	"SubSystem" id=EString "{" "name" name=EString ("relationship" "(" relationship+=[Relationship|EString] (","
+	//	relationship+=[Relationship|EString])* ")")? ("providedRoles" "{" providedRoles+=ProvidedRole (","
+	//	providedRoles+=ProvidedRole)* "}")? ("blackBoxBehavior" "{" blackBoxBehavior+=BlackBoxBehavior (","
+	//	blackBoxBehavior+=BlackBoxBehavior)* "}")? ("requiredRoles" "{" requiredRoles+=RequiredRole (","
+	//	requiredRoles+=RequiredRole)* "}")? ("coarseGrainedBehavior" "{" coarseGrainedBehavior+=CoarseGrainedBehavior (","
+	//	coarseGrainedBehavior+=CoarseGrainedBehavior)* "}")? ("assemblyContexts" "{" assemblyContexts+=AssemblyContext (","
+	//	assemblyContexts+=AssemblyContext)* "}")? ("assemblyConnectors" "{" assemblyConnectors+=AssemblyConnector (","
+	//	assemblyConnectors+=AssemblyConnector)* "}")? ("providedDelegationConnectors" "{"
+	//	providedDelegationConnectors+=ProvidedDelegationConnector (","
+	//	providedDelegationConnectors+=ProvidedDelegationConnector)* "}")? ("requiredDelegationConnectors" "{"
+	//	requiredDelegationConnectors+=RequiredDelegationConnector (","
+	//	requiredDelegationConnectors+=RequiredDelegationConnector)* "}")? "}";
+	public SubSystemElements getSubSystemAccess() {
+		return (pSubSystem != null) ? pSubSystem : (pSubSystem = new SubSystemElements());
+	}
+	
+	public ParserRule getSubSystemRule() {
+		return getSubSystemAccess().getRule();
+	}
+
+	//InfluencingParameter_Impl returns InfluencingParameter:
+	//	"InfluencingParameter" name=EString "{" "description" description=EString "behavior"
+	//	behavior=[servicebehavior::ServiceBehaviorAbstraction|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")?
+	//	"}";
+	public InfluencingParameter_ImplElements getInfluencingParameter_ImplAccess() {
+		return (pInfluencingParameter_Impl != null) ? pInfluencingParameter_Impl : (pInfluencingParameter_Impl = new InfluencingParameter_ImplElements());
+	}
+	
+	public ParserRule getInfluencingParameter_ImplRule() {
+		return getInfluencingParameter_ImplAccess().getRule();
+	}
+
+	//ResponseTimeSpecification returns servicebehavior::ResponseTimeSpecification:
+	//	{servicebehavior::ResponseTimeSpecification} "ResponseTimeSpecification";
+	public ResponseTimeSpecificationElements getResponseTimeSpecificationAccess() {
+		return (pResponseTimeSpecification != null) ? pResponseTimeSpecification : (pResponseTimeSpecification = new ResponseTimeSpecificationElements());
+	}
+	
+	public ParserRule getResponseTimeSpecificationRule() {
+		return getResponseTimeSpecificationAccess().getRule();
+	}
+
+	//Scope:
+	//	"Scope" "{" "interfaceProvidingRequiringEntity"
+	//	interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString] "}";
+	public ScopeElements getScopeAccess() {
+		return (pScope != null) ? pScope : (pScope = new ScopeElements());
+	}
+	
+	public ParserRule getScopeRule() {
+		return getScopeAccess().getRule();
+	}
+
+	//ServiceInputParameter:
+	//	"ServiceInputParameter" name=EString "{" "description" description=EString "characterization"
+	//	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+	//	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+	//	("returnType" returnType=[repository::DataType|EString])? "providedRole"
+	//	providedRole=[repository::ProvidedRole|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+	public ServiceInputParameterElements getServiceInputParameterAccess() {
+		return (pServiceInputParameter != null) ? pServiceInputParameter : (pServiceInputParameter = new ServiceInputParameterElements());
+	}
+	
+	public ParserRule getServiceInputParameterRule() {
+		return getServiceInputParameterAccess().getRule();
+	}
+
+	//ExternalCallReturnParameter:
+	//	"ExternalCallReturnParameter" name=EString "{" "description" description=EString "characterization"
+	//	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+	//	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+	//	("returnType" returnType=[repository::DataType|EString])? "externalCall"
+	//	externalCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+	public ExternalCallReturnParameterElements getExternalCallReturnParameterAccess() {
+		return (pExternalCallReturnParameter != null) ? pExternalCallReturnParameter : (pExternalCallReturnParameter = new ExternalCallReturnParameterElements());
+	}
+	
+	public ParserRule getExternalCallReturnParameterRule() {
+		return getExternalCallReturnParameterAccess().getRule();
+	}
+
+	//ExternalCallParameter:
+	//	"ExternalCallParameter" name=EString "{" "description" description=EString "characterization"
+	//	characterization=CharacterizationType "behavior" behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+	//	"signature" signature=[repository::Signature|EString] ("parameter" parameter=[repository::Parameter|EString])?
+	//	("returnType" returnType=[repository::DataType|EString])? "externallCall"
+	//	externallCall=[servicebehavior::ExternalCall|EString] ("scope" "{" scope+=Scope ("," scope+=Scope)* "}")? "}";
+	public ExternalCallParameterElements getExternalCallParameterAccess() {
+		return (pExternalCallParameter != null) ? pExternalCallParameter : (pExternalCallParameter = new ExternalCallParameterElements());
+	}
+	
+	public ParserRule getExternalCallParameterRule() {
+		return getExternalCallParameterAccess().getRule();
+	}
+
+	//FineGrainedBehavior returns servicebehavior::FineGrainedBehavior:
+	//	"FineGrainedBehavior" "{" ("describedSignature" describedSignature=[repository::Signature|EString])? "basicComponent"
+	//	basicComponent=[repository::BasicComponent|EString] ("influencingParameter" "{"
+	//	influencingParameter+=InfluencingParameter ("," influencingParameter+=InfluencingParameter)* "}")? ("actions" "{"
+	//	actions+=AbstractAction ("," actions+=AbstractAction)* "}")? "behavior" behavior=ComponentInternalBehavior "}";
+	public FineGrainedBehaviorElements getFineGrainedBehaviorAccess() {
+		return (pFineGrainedBehavior != null) ? pFineGrainedBehavior : (pFineGrainedBehavior = new FineGrainedBehaviorElements());
+	}
+	
+	public ParserRule getFineGrainedBehaviorRule() {
+		return getFineGrainedBehaviorAccess().getRule();
+	}
+
+	//AbstractAction_Impl returns servicebehavior::AbstractAction:
+	//	{servicebehavior::AbstractAction} "AbstractAction" "{" ("predecessor"
+	//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? "}";
+	public AbstractAction_ImplElements getAbstractAction_ImplAccess() {
+		return (pAbstractAction_Impl != null) ? pAbstractAction_Impl : (pAbstractAction_Impl = new AbstractAction_ImplElements());
+	}
+	
+	public ParserRule getAbstractAction_ImplRule() {
+		return getAbstractAction_ImplAccess().getRule();
+	}
+
+	//ComponentInternalBehavior_Impl returns servicebehavior::ComponentInternalBehavior:
+	//	{servicebehavior::ComponentInternalBehavior} "ComponentInternalBehavior" "{" ("actions" "{" actions+=AbstractAction
+	//	("," actions+=AbstractAction)* "}")? "}";
+	public ComponentInternalBehavior_ImplElements getComponentInternalBehavior_ImplAccess() {
+		return (pComponentInternalBehavior_Impl != null) ? pComponentInternalBehavior_Impl : (pComponentInternalBehavior_Impl = new ComponentInternalBehavior_ImplElements());
+	}
+	
+	public ParserRule getComponentInternalBehavior_ImplRule() {
+		return getComponentInternalBehavior_ImplAccess().getRule();
+	}
+
+	//StartAction returns servicebehavior::StartAction:
+	//	{servicebehavior::StartAction} "StartAction" "{" ("predecessor"
+	//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? "}";
+	public StartActionElements getStartActionAccess() {
+		return (pStartAction != null) ? pStartAction : (pStartAction = new StartActionElements());
+	}
+	
+	public ParserRule getStartActionRule() {
+		return getStartActionAccess().getRule();
+	}
+
+	//StopAction returns servicebehavior::StopAction:
+	//	{servicebehavior::StopAction} "StopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])?
+	//	("successor" successor=[servicebehavior::AbstractAction|EString])? "}";
+	public StopActionElements getStopActionAccess() {
+		return (pStopAction != null) ? pStopAction : (pStopAction = new StopActionElements());
+	}
+	
+	public ParserRule getStopActionRule() {
+		return getStopActionAccess().getRule();
+	}
+
+	//AcquireAction returns servicebehavior::AcquireAction:
+	//	"AcquireAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+	//	passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}";
+	public AcquireActionElements getAcquireActionAccess() {
+		return (pAcquireAction != null) ? pAcquireAction : (pAcquireAction = new AcquireActionElements());
+	}
+	
+	public ParserRule getAcquireActionRule() {
+		return getAcquireActionAccess().getRule();
+	}
+
+	//ReleaseAction returns servicebehavior::ReleaseAction:
+	//	"ReleaseAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? "passiveResource"
+	//	passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString] "}";
+	public ReleaseActionElements getReleaseActionAccess() {
+		return (pReleaseAction != null) ? pReleaseAction : (pReleaseAction = new ReleaseActionElements());
+	}
+	
+	public ParserRule getReleaseActionRule() {
+		return getReleaseActionAccess().getRule();
+	}
+
+	//InternalAction returns servicebehavior::InternalAction:
+	//	{servicebehavior::InternalAction} "InternalAction" "{" ("predecessor"
+	//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? ("resourceDemandSpecification" "{"
+	//	resourceDemandSpecification+=ResourceDemandSpecification (","
+	//	resourceDemandSpecification+=ResourceDemandSpecification)* "}")? "}";
+	public InternalActionElements getInternalActionAccess() {
+		return (pInternalAction != null) ? pInternalAction : (pInternalAction = new InternalActionElements());
+	}
+	
+	public ParserRule getInternalActionRule() {
+		return getInternalActionAccess().getRule();
+	}
+
+	//ForkAction returns servicebehavior::ForkAction:
+	//	withSynchronizationBarrier?="withSynchronizationBarrier" "ForkAction" "{" ("predecessor"
+	//	predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? ("forkedBehaviors" "{"
+	//	forkedBehaviors+=ComponentInternalBehavior ("," forkedBehaviors+=ComponentInternalBehavior)* "}")? "}";
+	public ForkActionElements getForkActionAccess() {
+		return (pForkAction != null) ? pForkAction : (pForkAction = new ForkActionElements());
+	}
+	
+	public ParserRule getForkActionRule() {
+		return getForkActionAccess().getRule();
+	}
+
+	//BranchAction returns servicebehavior::BranchAction:
+	//	"BranchAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? ("branches" "{" branches+=BranchTransition (","
+	//	branches+=BranchTransition)* "}")? "branchProbabilities" branchProbabilities=BranchProbabilities "}";
+	public BranchActionElements getBranchActionAccess() {
+		return (pBranchAction != null) ? pBranchAction : (pBranchAction = new BranchActionElements());
+	}
+	
+	public ParserRule getBranchActionRule() {
+		return getBranchActionAccess().getRule();
+	}
+
+	//LoopAction returns servicebehavior::LoopAction:
+	//	"LoopAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? "loopBodyBehavior" loopBodyBehavior=ComponentInternalBehavior
+	//	"loopIterationCountDistribution" loopIterationCountDistribution=LoopIterationCountDistribution "}";
+	public LoopActionElements getLoopActionAccess() {
+		return (pLoopAction != null) ? pLoopAction : (pLoopAction = new LoopActionElements());
+	}
+	
+	public ParserRule getLoopActionRule() {
+		return getLoopActionAccess().getRule();
+	}
+
+	//ExternalCallAction returns servicebehavior::ExternalCallAction:
+	//	"ExternalCallAction" "{" ("predecessor" predecessor=[servicebehavior::AbstractAction|EString])? ("successor"
+	//	successor=[servicebehavior::AbstractAction|EString])? "signature" signature=[repository::Signature|EString]
+	//	"requiredRole" requiredRole=[repository::RequiredRole|EString] "}";
+	public ExternalCallActionElements getExternalCallActionAccess() {
+		return (pExternalCallAction != null) ? pExternalCallAction : (pExternalCallAction = new ExternalCallActionElements());
+	}
+	
+	public ParserRule getExternalCallActionRule() {
+		return getExternalCallActionAccess().getRule();
+	}
+
+	//PassiveResourceSpecification returns resourceconfiguration::PassiveResourceSpecification:
+	//	"PassiveResourceSpecification" id=EString "{" "name" name=EString "passiveResourceType"
+	//	passiveResourceType=[resourcetype::PassiveResourceType|EString] "capacity" capacity=PassiveResourceCapacity "}";
+	public PassiveResourceSpecificationElements getPassiveResourceSpecificationAccess() {
+		return (pPassiveResourceSpecification != null) ? pPassiveResourceSpecification : (pPassiveResourceSpecification = new PassiveResourceSpecificationElements());
+	}
+	
+	public ParserRule getPassiveResourceSpecificationRule() {
+		return getPassiveResourceSpecificationAccess().getRule();
+	}
+
+	//PassiveResourceCapacity returns resourceconfiguration::PassiveResourceCapacity:
+	//	"PassiveResourceCapacity" id=EString "{" "name" name=EString "capacity" capacity=EBigInteger "}";
+	public PassiveResourceCapacityElements getPassiveResourceCapacityAccess() {
+		return (pPassiveResourceCapacity != null) ? pPassiveResourceCapacity : (pPassiveResourceCapacity = new PassiveResourceCapacityElements());
+	}
+	
+	public ParserRule getPassiveResourceCapacityRule() {
+		return getPassiveResourceCapacityAccess().getRule();
+	}
+
+	//PassiveResourceType returns resourcetype::PassiveResourceType:
+	//	"PassiveResourceType" id=EString "{" "name" name=EString "}";
+	public PassiveResourceTypeElements getPassiveResourceTypeAccess() {
+		return (pPassiveResourceType != null) ? pPassiveResourceType : (pPassiveResourceType = new PassiveResourceTypeElements());
+	}
+	
+	public ParserRule getPassiveResourceTypeRule() {
+		return getPassiveResourceTypeAccess().getRule();
+	}
+
+	//EBigInteger returns ecore::EBigInteger:
+	//	"-"? INT;
+	public EBigIntegerElements getEBigIntegerAccess() {
+		return (pEBigInteger != null) ? pEBigInteger : (pEBigInteger = new EBigIntegerElements());
+	}
+	
+	public ParserRule getEBigIntegerRule() {
+		return getEBigIntegerAccess().getRule();
+	}
+
+	//ResourceDemandSpecification returns servicebehavior::ResourceDemandSpecification:
+	//	"ResourceDemandSpecification" "{" "processingResourceType"
+	//	processingResourceType=[resourcetype::ProcessingResourceType|EString] "}";
+	public ResourceDemandSpecificationElements getResourceDemandSpecificationAccess() {
+		return (pResourceDemandSpecification != null) ? pResourceDemandSpecification : (pResourceDemandSpecification = new ResourceDemandSpecificationElements());
+	}
+	
+	public ParserRule getResourceDemandSpecificationRule() {
+		return getResourceDemandSpecificationAccess().getRule();
+	}
+
+	//ProcessingResourceType_Impl returns resourcetype::ProcessingResourceType:
+	//	"ProcessingResourceType" id=EString "{" "name" name=EString "}";
+	public ProcessingResourceType_ImplElements getProcessingResourceType_ImplAccess() {
+		return (pProcessingResourceType_Impl != null) ? pProcessingResourceType_Impl : (pProcessingResourceType_Impl = new ProcessingResourceType_ImplElements());
+	}
+	
+	public ParserRule getProcessingResourceType_ImplRule() {
+		return getProcessingResourceType_ImplAccess().getRule();
+	}
+
+	//CommunicationLinkResourceType returns resourcetype::CommunicationLinkResourceType:
+	//	"CommunicationLinkResourceType" id=EString "{" "name" name=EString "}";
+	public CommunicationLinkResourceTypeElements getCommunicationLinkResourceTypeAccess() {
+		return (pCommunicationLinkResourceType != null) ? pCommunicationLinkResourceType : (pCommunicationLinkResourceType = new CommunicationLinkResourceTypeElements());
+	}
+	
+	public ParserRule getCommunicationLinkResourceTypeRule() {
+		return getCommunicationLinkResourceTypeAccess().getRule();
+	}
+
+	//EBoolean returns ecore::EBoolean:
+	//	"true" | "false";
+	public EBooleanElements getEBooleanAccess() {
+		return (pEBoolean != null) ? pEBoolean : (pEBoolean = new EBooleanElements());
+	}
+	
+	public ParserRule getEBooleanRule() {
+		return getEBooleanAccess().getRule();
+	}
+
+	//BranchTransition returns servicebehavior::BranchTransition:
+	//	"BranchTransition" id=EString "{" "name" name=EString "branchBehavior" branchBehavior=ComponentInternalBehavior "}";
+	public BranchTransitionElements getBranchTransitionAccess() {
+		return (pBranchTransition != null) ? pBranchTransition : (pBranchTransition = new BranchTransitionElements());
+	}
+	
+	public ParserRule getBranchTransitionRule() {
+		return getBranchTransitionAccess().getRule();
+	}
+
+	//BranchProbabilities returns servicebehavior::BranchProbabilities:
+	//	"BranchProbabilities" "{" "probabilities" probabilities=[functions::RandomVariable|EString] "}";
+	public BranchProbabilitiesElements getBranchProbabilitiesAccess() {
+		return (pBranchProbabilities != null) ? pBranchProbabilities : (pBranchProbabilities = new BranchProbabilitiesElements());
+	}
+	
+	public ParserRule getBranchProbabilitiesRule() {
+		return getBranchProbabilitiesAccess().getRule();
+	}
+
+	//RandomVariable returns functions::RandomVariable:
+	//	"RandomVariable" "{" "specification" specification=EString "probFunction"
+	//	probFunction=[functions::ProbabilityFunction|EString] "}";
+	public RandomVariableElements getRandomVariableAccess() {
+		return (pRandomVariable != null) ? pRandomVariable : (pRandomVariable = new RandomVariableElements());
+	}
+	
+	public ParserRule getRandomVariableRule() {
+		return getRandomVariableAccess().getRule();
+	}
+
+	//ProbabilityMassFunction returns functions::ProbabilityMassFunction:
+	//	{functions::ProbabilityMassFunction} "ProbabilityMassFunction" "{" ("sample" "{" sample+=Sample ("," sample+=Sample)*
+	//	"}")? "}";
+	public ProbabilityMassFunctionElements getProbabilityMassFunctionAccess() {
+		return (pProbabilityMassFunction != null) ? pProbabilityMassFunction : (pProbabilityMassFunction = new ProbabilityMassFunctionElements());
+	}
+	
+	public ParserRule getProbabilityMassFunctionRule() {
+		return getProbabilityMassFunctionAccess().getRule();
+	}
+
+	//ProbabilityDensityFunction_Impl returns functions::ProbabilityDensityFunction:
+	//	{functions::ProbabilityDensityFunction} "ProbabilityDensityFunction";
+	public ProbabilityDensityFunction_ImplElements getProbabilityDensityFunction_ImplAccess() {
+		return (pProbabilityDensityFunction_Impl != null) ? pProbabilityDensityFunction_Impl : (pProbabilityDensityFunction_Impl = new ProbabilityDensityFunction_ImplElements());
+	}
+	
+	public ParserRule getProbabilityDensityFunction_ImplRule() {
+		return getProbabilityDensityFunction_ImplAccess().getRule();
+	}
+
+	//BoxedPDF returns functions::BoxedPDF:
+	//	{functions::BoxedPDF} "BoxedPDF" "{" ("sample" "{" sample+=ContinuousSample ("," sample+=ContinuousSample)* "}")? "}";
+	public BoxedPDFElements getBoxedPDFAccess() {
+		return (pBoxedPDF != null) ? pBoxedPDF : (pBoxedPDF = new BoxedPDFElements());
+	}
+	
+	public ParserRule getBoxedPDFRule() {
+		return getBoxedPDFAccess().getRule();
+	}
+
+	//ContinuousPDF_Impl returns functions::ContinuousPDF:
+	//	{functions::ContinuousPDF} "ContinuousPDF";
+	public ContinuousPDF_ImplElements getContinuousPDF_ImplAccess() {
+		return (pContinuousPDF_Impl != null) ? pContinuousPDF_Impl : (pContinuousPDF_Impl = new ContinuousPDF_ImplElements());
+	}
+	
+	public ParserRule getContinuousPDF_ImplRule() {
+		return getContinuousPDF_ImplAccess().getRule();
+	}
+
+	//NormalDistribution returns functions::NormalDistribution:
+	//	"NormalDistribution" "{" "mu" mu=EBigDecimal "sigma" sigma=EBigDecimal "}";
+	public NormalDistributionElements getNormalDistributionAccess() {
+		return (pNormalDistribution != null) ? pNormalDistribution : (pNormalDistribution = new NormalDistributionElements());
+	}
+	
+	public ParserRule getNormalDistributionRule() {
+		return getNormalDistributionAccess().getRule();
+	}
+
+	//ExponentialDistribution returns functions::ExponentialDistribution:
+	//	"ExponentialDistribution" "{" "rate" rate=EBigDecimal "}";
+	public ExponentialDistributionElements getExponentialDistributionAccess() {
+		return (pExponentialDistribution != null) ? pExponentialDistribution : (pExponentialDistribution = new ExponentialDistributionElements());
+	}
+	
+	public ParserRule getExponentialDistributionRule() {
+		return getExponentialDistributionAccess().getRule();
+	}
+
+	//Sample returns functions::Sample:
+	//	"Sample" "{" "probability" probability=EBigDecimal "value" value=[ecore::EObject|EString] "}";
+	public SampleElements getSampleAccess() {
+		return (pSample != null) ? pSample : (pSample = new SampleElements());
+	}
+	
+	public ParserRule getSampleRule() {
+		return getSampleAccess().getRule();
+	}
+
+	//EObject returns ecore::EObject:
+	//	{ecore::EObject} "EObject";
+	public EObjectElements getEObjectAccess() {
+		return (pEObject != null) ? pEObject : (pEObject = new EObjectElements());
+	}
+	
+	public ParserRule getEObjectRule() {
+		return getEObjectAccess().getRule();
+	}
+
+	//EBigDecimal returns ecore::EBigDecimal:
+	//	INT? "." INT;
+	public EBigDecimalElements getEBigDecimalAccess() {
+		return (pEBigDecimal != null) ? pEBigDecimal : (pEBigDecimal = new EBigDecimalElements());
+	}
+	
+	public ParserRule getEBigDecimalRule() {
+		return getEBigDecimalAccess().getRule();
+	}
+
+	//ContinuousSample returns functions::ContinuousSample:
+	//	"ContinuousSample" "{" "value" value=EBigDecimal "probability" probability=EBigDecimal "}";
+	public ContinuousSampleElements getContinuousSampleAccess() {
+		return (pContinuousSample != null) ? pContinuousSample : (pContinuousSample = new ContinuousSampleElements());
+	}
+	
+	public ParserRule getContinuousSampleRule() {
+		return getContinuousSampleAccess().getRule();
+	}
+
+	//LoopIterationCountDistribution returns servicebehavior::LoopIterationCountDistribution:
+	//	"LoopIterationCountDistribution" "{" "loopIterationCountDistribution"
+	//	loopIterationCountDistribution=[functions::RandomVariable|EString] "}";
+	public LoopIterationCountDistributionElements getLoopIterationCountDistributionAccess() {
+		return (pLoopIterationCountDistribution != null) ? pLoopIterationCountDistribution : (pLoopIterationCountDistribution = new LoopIterationCountDistributionElements());
+	}
+	
+	public ParserRule getLoopIterationCountDistributionRule() {
+		return getLoopIterationCountDistributionAccess().getRule();
+	}
+
+	//AssemblyContext returns repository::AssemblyContext:
+	//	"AssemblyContext" id=EString "{" "name" name=EString "encapsulatedComponent"
+	//	encapsulatedComponent=[repository::RepositoryComponent|EString] "}";
+	public AssemblyContextElements getAssemblyContextAccess() {
+		return (pAssemblyContext != null) ? pAssemblyContext : (pAssemblyContext = new AssemblyContextElements());
+	}
+	
+	public ParserRule getAssemblyContextRule() {
+		return getAssemblyContextAccess().getRule();
+	}
+
+	//AssemblyConnector returns repository::AssemblyConnector:
+	//	"AssemblyConnector" id=EString "{" "name" name=EString "requiredRole" requiredRole=[repository::RequiredRole|EString]
+	//	"providedRole" providedRole=[repository::ProvidedRole|EString] "providingAssemblyContext"
+	//	providingAssemblyContext=[repository::AssemblyContext|EString] "requiringAssemblyContext"
+	//	requiringAssemblyContext=[repository::AssemblyContext|EString] "}";
+	public AssemblyConnectorElements getAssemblyConnectorAccess() {
+		return (pAssemblyConnector != null) ? pAssemblyConnector : (pAssemblyConnector = new AssemblyConnectorElements());
+	}
+	
+	public ParserRule getAssemblyConnectorRule() {
+		return getAssemblyConnectorAccess().getRule();
+	}
+
+	//ProvidedDelegationConnector returns repository::ProvidedDelegationConnector:
+	//	"ProvidedDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+	//	assemblyContext=[repository::AssemblyContext|EString] "innerProvidedRole"
+	//	innerProvidedRole=[repository::ProvidedRole|EString] "outerProvidedRole"
+	//	outerProvidedRole=[repository::ProvidedRole|EString] "}";
+	public ProvidedDelegationConnectorElements getProvidedDelegationConnectorAccess() {
+		return (pProvidedDelegationConnector != null) ? pProvidedDelegationConnector : (pProvidedDelegationConnector = new ProvidedDelegationConnectorElements());
+	}
+	
+	public ParserRule getProvidedDelegationConnectorRule() {
+		return getProvidedDelegationConnectorAccess().getRule();
+	}
+
+	//RequiredDelegationConnector returns repository::RequiredDelegationConnector:
+	//	"RequiredDelegationConnector" id=EString "{" "name" name=EString "assemblyContext"
+	//	assemblyContext=[repository::AssemblyContext|EString] "innerRequiredRole"
+	//	innerRequiredRole=[repository::RequiredRole|EString] "outerRequiredRole"
+	//	outerRequiredRole=[repository::RequiredRole|EString] "}";
+	public RequiredDelegationConnectorElements getRequiredDelegationConnectorAccess() {
+		return (pRequiredDelegationConnector != null) ? pRequiredDelegationConnector : (pRequiredDelegationConnector = new RequiredDelegationConnectorElements());
+	}
+	
+	public ParserRule getRequiredDelegationConnectorRule() {
+		return getRequiredDelegationConnectorAccess().getRule();
+	}
+
+	//enum CharacterizationType:
+	//	VALUE | NUMBER_OF_ELEMENTS;
+	public CharacterizationTypeElements getCharacterizationTypeAccess() {
+		return (unknownRuleCharacterizationType != null) ? unknownRuleCharacterizationType : (unknownRuleCharacterizationType = new CharacterizationTypeElements());
+	}
+	
+	public EnumRule getCharacterizationTypeRule() {
+		return getCharacterizationTypeAccess().getRule();
+	}
+
+	//ExternalCall_Impl returns servicebehavior::ExternalCall:
+	//	"ExternalCall" "{" "signature" signature=[repository::Signature|EString] "requiredRole"
+	//	requiredRole=[repository::RequiredRole|EString] "}";
+	public ExternalCall_ImplElements getExternalCall_ImplAccess() {
+		return (pExternalCall_Impl != null) ? pExternalCall_Impl : (pExternalCall_Impl = new ExternalCall_ImplElements());
+	}
+	
+	public ParserRule getExternalCall_ImplRule() {
+		return getExternalCall_ImplAccess().getRule();
+	}
+
+	//ExternalCallFrequency returns servicebehavior::ExternalCallFrequency:
+	//	"ExternalCallFrequency" "{" "externalCall" externalCall=ExternalCall "frequency" frequency=CallFrequency "}";
+	public ExternalCallFrequencyElements getExternalCallFrequencyAccess() {
+		return (pExternalCallFrequency != null) ? pExternalCallFrequency : (pExternalCallFrequency = new ExternalCallFrequencyElements());
+	}
+	
+	public ParserRule getExternalCallFrequencyRule() {
+		return getExternalCallFrequencyAccess().getRule();
+	}
+
+	//CallFrequency returns servicebehavior::CallFrequency:
+	//	"CallFrequency" "{" "frequency" frequency=[functions::RandomVariable|EString] "}";
+	public CallFrequencyElements getCallFrequencyAccess() {
+		return (pCallFrequency != null) ? pCallFrequency : (pCallFrequency = new CallFrequencyElements());
+	}
+	
+	public ParserRule getCallFrequencyRule() {
+		return getCallFrequencyAccess().getRule();
+	}
+
+	//DependencyRelationship:
+	//	"DependencyRelationship" "{" "surroundingEntity"
+	//	surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "influencedVariable"
+	//	influencedVariable=[InfluencedVariable|EString] "influencingParameter"
+	//	influencingParameter=[InfluencingParameter|EString] "}";
+	public DependencyRelationshipElements getDependencyRelationshipAccess() {
+		return (pDependencyRelationship != null) ? pDependencyRelationship : (pDependencyRelationship = new DependencyRelationshipElements());
+	}
+	
+	public ParserRule getDependencyRelationshipRule() {
+		return getDependencyRelationshipAccess().getRule();
+	}
+
+	//CorrelationRelationship:
+	//	"CorrelationRelationship" "{" "surroundingEntity"
+	//	surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString] "leftInfluencingParameter"
+	//	leftInfluencingParameter=[InfluencingParameter|EString] "rightInfluencingParameter"
+	//	rightInfluencingParameter=[InfluencingParameter|EString] "leftComponentInstanceReference"
+	//	leftComponentInstanceReference=ComponentInstanceReference "rightComponentInstanceReference"
+	//	rightComponentInstanceReference=ComponentInstanceReference "}";
+	public CorrelationRelationshipElements getCorrelationRelationshipAccess() {
+		return (pCorrelationRelationship != null) ? pCorrelationRelationship : (pCorrelationRelationship = new CorrelationRelationshipElements());
+	}
+	
+	public ParserRule getCorrelationRelationshipRule() {
+		return getCorrelationRelationshipAccess().getRule();
+	}
+
+	//InfluencedVariable:
+	//	{InfluencedVariable} "InfluencedVariable" "{" ("controlFlowVariable"
+	//	controlFlowVariable=[ControlFlowSpecification|EString])? ("resourceDemand"
+	//	resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])? ("responseTime"
+	//	responseTime=[servicebehavior::ResponseTimeSpecification|EString])? "}";
+	public InfluencedVariableElements getInfluencedVariableAccess() {
+		return (pInfluencedVariable != null) ? pInfluencedVariable : (pInfluencedVariable = new InfluencedVariableElements());
+	}
+	
+	public ParserRule getInfluencedVariableRule() {
+		return getInfluencedVariableAccess().getRule();
+	}
+
+	//ComponentInstanceReference:
+	//	{ComponentInstanceReference} "ComponentInstanceReference" "{" ("assemblies" "("
+	//	assemblies+=[repository::AssemblyContext|EString] ("," assemblies+=[repository::AssemblyContext|EString])* ")")? "}";
+	public ComponentInstanceReferenceElements getComponentInstanceReferenceAccess() {
+		return (pComponentInstanceReference != null) ? pComponentInstanceReference : (pComponentInstanceReference = new ComponentInstanceReferenceElements());
+	}
+	
+	public ParserRule getComponentInstanceReferenceRule() {
+		return getComponentInstanceReferenceAccess().getRule();
+	}
+
+	//terminal ID:
+	//	"^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaTerminals.getIDRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	"0".."9"+;
+	public TerminalRule getINTRule() {
+		return gaTerminals.getINTRule();
+	} 
+
+	//terminal STRING:
+	//	"\"" ("\\" ("b" | "t" | "n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\""))* "\"" | "\'" ("\\" ("b" | "t" |
+	//	"n" | "f" | "r" | "u" | "\"" | "\'" | "\\") | !("\\" | "\'"))* "\'";
+	public TerminalRule getSTRINGRule() {
+		return gaTerminals.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaTerminals.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaTerminals.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaTerminals.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaTerminals.getANY_OTHERRule();
+	} 
+}
diff --git a/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/validation/AbstractRepositoryDSLJavaValidator.java b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/validation/AbstractRepositoryDSLJavaValidator.java
new file mode 100644
index 0000000000000000000000000000000000000000..a9c90b784ebe39c7bc49607d2d5c8fe52662cce1
--- /dev/null
+++ b/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/validation/AbstractRepositoryDSLJavaValidator.java
@@ -0,0 +1,24 @@
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
+
+public class AbstractRepositoryDSLJavaValidator extends AbstractDeclarativeValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.descartes-research.net/metamodel/repository/0.1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.descartes-research.net/metamodel/parameterdependencies/0.1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.descartes-research.net/metamodel/servicebehavior/0.1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.descartes-research.net/metamodel/resourcetype/0.1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.descartes-research.net/metamodel/functions/0.1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.descartes-research.net/metamodel/resourceconfiguration/0.1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/emf/2002/Ecore"));
+		return result;
+	}
+
+}
diff --git a/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/GenerateRepositoryDSL.mwe2 b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/GenerateRepositoryDSL.mwe2
new file mode 100644
index 0000000000000000000000000000000000000000..ca13890537c005facaa46bb7f58feaa43d32d20e
--- /dev/null
+++ b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/GenerateRepositoryDSL.mwe2
@@ -0,0 +1,121 @@
+module edu.kit.ipd.descartes.mm.applicationlevel.repository.text.RepositoryDSL
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+
+var grammarURI = "classpath:/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.xtext"
+var file.extensions = "repositoryDSL"
+var projectName = "edu.kit.ipd.descartes.mm.applicationlevel.repository.text"
+var runtimeProject = "../${projectName}"
+
+Workflow {
+	bean = StandaloneSetup {
+		scanClassPath  = true
+		platformUri = "${runtimeProject}/.."
+		registerGeneratedEPackage = "edu.kit.ipd.descartes.mm.parameterdependencies.ParameterdependenciesPackage"
+		registerGeneratedEPackage = "edu.kit.ipd.descartes.mm.system.SystemPackage"
+		registerGeneratedEPackage = "edu.kit.ipd.descartes.mm.repository.RepositoryPackage"
+		registerGeneratedEPackage = "edu.kit.ipd.descartes.mm.functions.FunctionsPackage"
+		registerGeneratedEPackage = "edu.kit.ipd.descartes.mm.servicebehavior.ServicebehaviorPackage"
+	
+		// registerGenModelFile = "platform:/resource/edu.kit.ipd.descartes.mm/model/applicationlevel.genmodel"
+	
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}/src-gen"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+	}
+
+	component = Generator {
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		language = {
+			uri = grammarURI
+			fileExtensions = file.extensions
+
+			// Java API to access grammar elements (required by several other fragments)
+			fragment = grammarAccess.GrammarAccessFragment {}
+
+			// generates Java API for the generated EPackages
+			// fragment = ecore.EcoreGeneratorFragment {}
+
+			// the serialization component
+			fragment = parseTreeConstructor.ParseTreeConstructorFragment {}
+
+			// a custom ResourceFactory for use with EMF 
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = file.extensions
+			}
+
+			// the Antlr parser
+			fragment = parser.antlr.XtextAntlrGeneratorFragment {
+				options = {
+					classSplitting = true
+				}
+			}
+
+			// the Ecore2Xtext specific terminal converter
+			fragment = ecore2xtext.Ecore2XtextValueConverterServiceFragment {}
+
+			// java-based API for validation 
+			fragment = validation.JavaValidatorFragment {
+			// composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+			// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+			}
+
+			// scoping and exporting API
+			fragment = scoping.ImportURIScopingFragment {}
+			fragment = exporting.SimpleNamesFragment {}
+
+			// scoping and exporting API 
+
+			// fragment = scoping.ImportNamespacesScopingFragment {}
+			// fragment = exporting.QualifiedNamesFragment {}
+
+
+			// formatter API 
+			fragment = ecore2xtext.FormatterFragment {}
+
+			// labeling API 
+			fragment = labeling.LabelProviderFragment {}
+
+			// outline API 
+            fragment = outline.OutlineTreeProviderFragment {}
+            fragment = outline.QuickOutlineFragment {}
+
+			// java-based API for content assistance 
+			fragment = contentAssist.JavaBasedContentAssistFragment {}
+
+			// antlr parser generator tailored for content assist 
+			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
+				options = {
+					classSplitting = true
+				}
+			}
+
+			// provides a compare view
+            fragment = compare.CompareFragment {
+                fileExtensions = file.extensions
+            }
+
+			fragment = builder.BuilderIntegrationFragment {}
+
+			// project wizard (optional) 
+
+			// fragment = projectWizard.SimpleProjectWizardFragment {
+			//		generatorProjectName = "${projectName}.generator" 
+			//		modelFileExtension = file.extensions
+			// }
+
+			// quickfix API 
+			fragment = quickfix.QuickfixProviderFragment {}
+		}
+	}
+}
diff --git a/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.xtext b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.xtext
new file mode 100644
index 0000000000000000000000000000000000000000..1c9461e38e1f1b97346046e7e6ad6aac0041e55d
--- /dev/null
+++ b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSL.xtext
@@ -0,0 +1,620 @@
+// automatically generated by Xtext
+grammar edu.kit.ipd.descartes.mm.applicationlevel.repository.text.RepositoryDSL with org.eclipse.xtext.common.Terminals 
+
+import "platform:/resource/edu.kit.ipd.descartes.mm/model/parameterdependency.ecore" 
+
+import "platform:/resource/edu.kit.ipd.descartes.mm/model/servicebehavior.ecore" as servicebehavior
+
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+
+import "platform:/resource/edu.kit.ipd.descartes.mm/model/repository.ecore" as repository
+
+import "platform:/resource/edu.kit.ipd.descartes.mm/model/system.ecore" as system
+
+import "platform:/resource/edu.kit.ipd.descartes.mm/model/resourceconfiguration.ecore" as resourceconfiguration
+
+import "platform:/resource/edu.kit.ipd.descartes.mm/model/functions.ecore" as functions
+
+import "platform:/resource/edu.kit.ipd.descartes.mm/model/resourcetype.ecore" as resourcetype
+
+Repository returns repository::Repository:
+	'Repository'
+	id=EString
+	'{'
+		'name' name=EString
+		('datatypes' '{' datatypes+=DataType ( "," datatypes+=DataType)* '}' )?
+		('interfaces' '{' interfaces+=Interface ( "," interfaces+=Interface)* '}' )?
+		('components' '{' components+=RepositoryComponent ( "," components+=RepositoryComponent)* '}' )?
+    '}';
+
+
+DataType returns repository::DataType:
+	CollectionDataType | CompositeDataType | PrimitiveDataType;
+
+RepositoryComponent returns repository::RepositoryComponent:
+	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+
+Relationship returns Relationship:
+	DependencyRelationship | CorrelationRelationship;
+
+InfluencingParameter returns InfluencingParameter:
+	InfluencingParameter_Impl | ServiceInputParameter | ExternalCallReturnParameter | ExternalCallParameter;
+
+InterfaceProvidingEntity returns repository::InterfaceProvidingEntity:
+	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+
+InterfaceProvidingRequiringEntity returns repository::InterfaceProvidingRequiringEntity:
+	RepositoryComponent_Impl | BasicComponent | CompositeComponent | SubSystem;
+
+ServiceBehaviorAbstraction returns servicebehavior::ServiceBehaviorAbstraction:
+	FineGrainedBehavior | CoarseGrainedBehavior | BlackBoxBehavior;
+
+ExternalCall returns servicebehavior::ExternalCall:
+	ExternalCall_Impl | ExternalCallAction;
+
+AbstractAction returns servicebehavior::AbstractAction:
+	AbstractAction_Impl | StartAction | StopAction | AcquireAction | ReleaseAction | InternalAction | ForkAction | BranchAction | LoopAction | ExternalCallAction;
+
+ComponentInternalBehavior returns servicebehavior::ComponentInternalBehavior:
+	ComponentInternalBehavior_Impl | FineGrainedBehavior;
+
+ProcessingResourceType returns resourcetype::ProcessingResourceType:
+	ProcessingResourceType_Impl | CommunicationLinkResourceType;
+
+ProbabilityFunction returns functions::ProbabilityFunction:
+	ProbabilityMassFunction | ProbabilityDensityFunction_Impl | BoxedPDF | ContinuousPDF_Impl | NormalDistribution | ExponentialDistribution;
+
+EString returns ecore::EString:
+	STRING | ID;
+
+Interface returns repository::Interface:
+	'Interface'
+	id=EString
+	'{'
+		'name' name=EString
+		('parentInterfaces' '(' parentInterfaces+=[repository::Interface|EString] ( "," parentInterfaces+=[repository::Interface|EString])* ')' )?
+		('signatures' '{' signatures+=Signature ( "," signatures+=Signature)* '}' )?
+    '}';
+
+RepositoryComponent_Impl returns repository::RepositoryComponent:
+	'RepositoryComponent'
+	id=EString
+	'{'
+		'name' name=EString
+		('relationship' '(' relationship+=[Relationship|EString] ( "," relationship+=[Relationship|EString])* ')' )?
+		('providedRoles' '{' providedRoles+=ProvidedRole ( "," providedRoles+=ProvidedRole)* '}' )?
+		('blackBoxBehavior' '{' blackBoxBehavior+=BlackBoxBehavior ( "," blackBoxBehavior+=BlackBoxBehavior)* '}' )?
+		('requiredRoles' '{' requiredRoles+=RequiredRole ( "," requiredRoles+=RequiredRole)* '}' )?
+		('coarseGrainedBehavior' '{' coarseGrainedBehavior+=CoarseGrainedBehavior ( "," coarseGrainedBehavior+=CoarseGrainedBehavior)* '}' )?
+    '}';
+
+CollectionDataType returns repository::CollectionDataType:
+	'CollectionDataType'
+	id=EString
+	'{'
+		'name' name=EString
+		'innerType' innerType=[repository::DataType|EString]
+    '}';
+
+CompositeDataType returns repository::CompositeDataType:
+	'CompositeDataType'
+	id=EString
+	'{'
+		'name' name=EString
+		('parentTypes' '(' parentTypes+=[repository::CompositeDataType|EString] ( "," parentTypes+=[repository::CompositeDataType|EString])* ')' )?
+		('innerDeclarations' '{' innerDeclarations+=InnerDeclaration ( "," innerDeclarations+=InnerDeclaration)* '}' )?
+    '}';
+
+PrimitiveDataType returns repository::PrimitiveDataType:
+	'PrimitiveDataType'
+	'{'
+		'type' type=PrimitiveTypeEnum
+    '}';
+
+InnerDeclaration returns repository::InnerDeclaration:
+	'InnerDeclaration'
+	id=EString
+	'{'
+		'name' name=EString
+		'dataType' dataType=[repository::DataType|EString]
+    '}';
+
+enum PrimitiveTypeEnum returns repository::PrimitiveTypeEnum:
+	INT = 'INT' | STRING = 'STRING' | BOOL = 'BOOL' | DOUBLE = 'DOUBLE' | CHAR = 'CHAR' | BYTE = 'BYTE' | LONG = 'LONG';
+
+Signature returns repository::Signature:
+	'Signature'
+	id=EString
+	'{'
+		'name' name=EString
+		('returnType' returnType=[repository::DataType|EString])?
+		('parameters' '{' parameters+=Parameter ( "," parameters+=Parameter)* '}' )?
+    '}';
+
+Parameter returns repository::Parameter:
+	'Parameter'
+	name=EString
+	'{'
+		'modifier' modifier=ParameterModifier
+		'dataType' dataType=[repository::DataType|EString]
+    '}';
+
+enum ParameterModifier returns repository::ParameterModifier:
+	NONE = 'NONE' | IN = 'IN' | OUT = 'OUT' | INOUT = 'INOUT';
+
+ProvidedRole returns repository::ProvidedRole:
+	'ProvidedRole'
+	id=EString
+	'{'
+		'name' name=EString
+		'interface' interface=[repository::Interface|EString]
+    '}';
+
+BlackBoxBehavior returns servicebehavior::BlackBoxBehavior:
+	'BlackBoxBehavior'
+	'{'
+		('describedSignature' describedSignature=[repository::Signature|EString])?
+		'describedEntity' describedEntity=[repository::InterfaceProvidingEntity|EString]
+		('influencingParameter' '{' influencingParameter+=InfluencingParameter ( "," influencingParameter+=InfluencingParameter)* '}' )?
+		('responseTimeSpecification' responseTimeSpecification=ResponseTimeSpecification)?
+    '}';
+
+RequiredRole returns repository::RequiredRole:
+	'RequiredRole'
+	id=EString
+	'{'
+		'name' name=EString
+		'interface' interface=[repository::Interface|EString]
+    '}';
+
+CoarseGrainedBehavior returns servicebehavior::CoarseGrainedBehavior:
+	'CoarseGrainedBehavior'
+	'{'
+		('describedSignature' describedSignature=[repository::Signature|EString])?
+		'describedEntity' describedEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+		('influencingParameter' '{' influencingParameter+=InfluencingParameter ( "," influencingParameter+=InfluencingParameter)* '}' )?
+		('externalCallFrequency' '{' externalCallFrequency+=ExternalCallFrequency ( "," externalCallFrequency+=ExternalCallFrequency)* '}' )?
+		('resourceDemandSpecification' '{' resourceDemandSpecification+=ResourceDemandSpecification ( "," resourceDemandSpecification+=ResourceDemandSpecification)* '}' )?
+    '}';
+
+BasicComponent returns repository::BasicComponent:
+	'BasicComponent'
+	id=EString
+	'{'
+		'name' name=EString
+		('relationship' '(' relationship+=[Relationship|EString] ( "," relationship+=[Relationship|EString])* ')' )?
+		('providedRoles' '{' providedRoles+=ProvidedRole ( "," providedRoles+=ProvidedRole)* '}' )?
+		('blackBoxBehavior' '{' blackBoxBehavior+=BlackBoxBehavior ( "," blackBoxBehavior+=BlackBoxBehavior)* '}' )?
+		('requiredRoles' '{' requiredRoles+=RequiredRole ( "," requiredRoles+=RequiredRole)* '}' )?
+		('coarseGrainedBehavior' '{' coarseGrainedBehavior+=CoarseGrainedBehavior ( "," coarseGrainedBehavior+=CoarseGrainedBehavior)* '}' )?
+		('passiveResources' '{' passiveResources+=PassiveResourceSpecification ( "," passiveResources+=PassiveResourceSpecification)* '}' )?
+		('fineGrainedBehavior' '{' fineGrainedBehavior+=FineGrainedBehavior ( "," fineGrainedBehavior+=FineGrainedBehavior)* '}' )?
+    '}';
+
+CompositeComponent returns repository::CompositeComponent:
+	'CompositeComponent'
+	id=EString
+	'{'
+		'name' name=EString
+		('relationship' '(' relationship+=[Relationship|EString] ( "," relationship+=[Relationship|EString])* ')' )?
+		('providedRoles' '{' providedRoles+=ProvidedRole ( "," providedRoles+=ProvidedRole)* '}' )?
+		('blackBoxBehavior' '{' blackBoxBehavior+=BlackBoxBehavior ( "," blackBoxBehavior+=BlackBoxBehavior)* '}' )?
+		('requiredRoles' '{' requiredRoles+=RequiredRole ( "," requiredRoles+=RequiredRole)* '}' )?
+		('coarseGrainedBehavior' '{' coarseGrainedBehavior+=CoarseGrainedBehavior ( "," coarseGrainedBehavior+=CoarseGrainedBehavior)* '}' )?
+		('assemblyContexts' '{' assemblyContexts+=AssemblyContext ( "," assemblyContexts+=AssemblyContext)* '}' )?
+		('assemblyConnectors' '{' assemblyConnectors+=AssemblyConnector ( "," assemblyConnectors+=AssemblyConnector)* '}' )?
+		('providedDelegationConnectors' '{' providedDelegationConnectors+=ProvidedDelegationConnector ( "," providedDelegationConnectors+=ProvidedDelegationConnector)* '}' )?
+		('requiredDelegationConnectors' '{' requiredDelegationConnectors+=RequiredDelegationConnector ( "," requiredDelegationConnectors+=RequiredDelegationConnector)* '}' )?
+    '}';
+
+SubSystem returns repository::SubSystem:
+	'SubSystem'
+	id=EString
+	'{'
+		'name' name=EString
+		('relationship' '(' relationship+=[Relationship|EString] ( "," relationship+=[Relationship|EString])* ')' )?
+		('providedRoles' '{' providedRoles+=ProvidedRole ( "," providedRoles+=ProvidedRole)* '}' )?
+		('blackBoxBehavior' '{' blackBoxBehavior+=BlackBoxBehavior ( "," blackBoxBehavior+=BlackBoxBehavior)* '}' )?
+		('requiredRoles' '{' requiredRoles+=RequiredRole ( "," requiredRoles+=RequiredRole)* '}' )?
+		('coarseGrainedBehavior' '{' coarseGrainedBehavior+=CoarseGrainedBehavior ( "," coarseGrainedBehavior+=CoarseGrainedBehavior)* '}' )?
+		('assemblyContexts' '{' assemblyContexts+=AssemblyContext ( "," assemblyContexts+=AssemblyContext)* '}' )?
+		('assemblyConnectors' '{' assemblyConnectors+=AssemblyConnector ( "," assemblyConnectors+=AssemblyConnector)* '}' )?
+		('providedDelegationConnectors' '{' providedDelegationConnectors+=ProvidedDelegationConnector ( "," providedDelegationConnectors+=ProvidedDelegationConnector)* '}' )?
+		('requiredDelegationConnectors' '{' requiredDelegationConnectors+=RequiredDelegationConnector ( "," requiredDelegationConnectors+=RequiredDelegationConnector)* '}' )?
+    '}';
+
+InfluencingParameter_Impl returns InfluencingParameter:
+	'InfluencingParameter'
+	name=EString
+	'{'
+		'description' description=EString
+		'behavior' behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		('scope' '{' scope+=Scope ( "," scope+=Scope)* '}' )?
+    '}';
+
+ResponseTimeSpecification returns servicebehavior::ResponseTimeSpecification:
+	{servicebehavior::ResponseTimeSpecification}
+	'ResponseTimeSpecification'
+;
+
+Scope returns Scope:
+	'Scope'
+	'{'
+		'interfaceProvidingRequiringEntity' interfaceProvidingRequiringEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+    '}';
+
+ServiceInputParameter returns ServiceInputParameter:
+	'ServiceInputParameter'
+	name=EString
+	'{'
+		'description' description=EString
+		'characterization' characterization=CharacterizationType
+		'behavior' behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		'signature' signature=[repository::Signature|EString]
+		('parameter' parameter=[repository::Parameter|EString])?
+		('returnType' returnType=[repository::DataType|EString])?
+		'providedRole' providedRole=[repository::ProvidedRole|EString]
+		('scope' '{' scope+=Scope ( "," scope+=Scope)* '}' )?
+    '}';
+
+ExternalCallReturnParameter returns ExternalCallReturnParameter:
+	'ExternalCallReturnParameter'
+	name=EString
+	'{'
+		'description' description=EString
+		'characterization' characterization=CharacterizationType
+		'behavior' behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		'signature' signature=[repository::Signature|EString]
+		('parameter' parameter=[repository::Parameter|EString])?
+		('returnType' returnType=[repository::DataType|EString])?
+		'externalCall' externalCall=[servicebehavior::ExternalCall|EString]
+		('scope' '{' scope+=Scope ( "," scope+=Scope)* '}' )?
+    '}';
+
+ExternalCallParameter returns ExternalCallParameter:
+	'ExternalCallParameter'
+	name=EString
+	'{'
+		'description' description=EString
+		'characterization' characterization=CharacterizationType
+		'behavior' behavior=[servicebehavior::ServiceBehaviorAbstraction|EString]
+		'signature' signature=[repository::Signature|EString]
+		('parameter' parameter=[repository::Parameter|EString])?
+		('returnType' returnType=[repository::DataType|EString])?
+		'externallCall' externallCall=[servicebehavior::ExternalCall|EString]
+		('scope' '{' scope+=Scope ( "," scope+=Scope)* '}' )?
+    '}';
+
+FineGrainedBehavior returns servicebehavior::FineGrainedBehavior:
+	'FineGrainedBehavior'
+	'{'
+		('describedSignature' describedSignature=[repository::Signature|EString])?
+		'basicComponent' basicComponent=[repository::BasicComponent|EString]
+		('influencingParameter' '{' influencingParameter+=InfluencingParameter ( "," influencingParameter+=InfluencingParameter)* '}' )?
+		('actions' '{' actions+=AbstractAction ( "," actions+=AbstractAction)* '}' )?
+		'behavior' behavior=ComponentInternalBehavior
+    '}';
+
+AbstractAction_Impl returns servicebehavior::AbstractAction:
+	{servicebehavior::AbstractAction}
+	'AbstractAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+    '}';
+
+ComponentInternalBehavior_Impl returns servicebehavior::ComponentInternalBehavior:
+	{servicebehavior::ComponentInternalBehavior}
+	'ComponentInternalBehavior'
+	'{'
+		('actions' '{' actions+=AbstractAction ( "," actions+=AbstractAction)* '}' )?
+    '}';
+
+StartAction returns servicebehavior::StartAction:
+	{servicebehavior::StartAction}
+	'StartAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+    '}';
+
+StopAction returns servicebehavior::StopAction:
+	{servicebehavior::StopAction}
+	'StopAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+    '}';
+
+AcquireAction returns servicebehavior::AcquireAction:
+	'AcquireAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+		'passiveResource' passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString]
+    '}';
+
+ReleaseAction returns servicebehavior::ReleaseAction:
+	'ReleaseAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+		'passiveResource' passiveResource=[resourceconfiguration::PassiveResourceSpecification|EString]
+    '}';
+
+InternalAction returns servicebehavior::InternalAction:
+	{servicebehavior::InternalAction}
+	'InternalAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+		('resourceDemandSpecification' '{' resourceDemandSpecification+=ResourceDemandSpecification ( "," resourceDemandSpecification+=ResourceDemandSpecification)* '}' )?
+    '}';
+
+ForkAction returns servicebehavior::ForkAction:
+	withSynchronizationBarrier?='withSynchronizationBarrier'
+	'ForkAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+		('forkedBehaviors' '{' forkedBehaviors+=ComponentInternalBehavior ( "," forkedBehaviors+=ComponentInternalBehavior)* '}' )?
+    '}';
+
+BranchAction returns servicebehavior::BranchAction:
+	'BranchAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+		('branches' '{' branches+=BranchTransition ( "," branches+=BranchTransition)* '}' )?
+		'branchProbabilities' branchProbabilities=BranchProbabilities
+    '}';
+
+LoopAction returns servicebehavior::LoopAction:
+	'LoopAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+		'loopBodyBehavior' loopBodyBehavior=ComponentInternalBehavior
+		'loopIterationCountDistribution' loopIterationCountDistribution=LoopIterationCountDistribution
+    '}';
+
+ExternalCallAction returns servicebehavior::ExternalCallAction:
+	'ExternalCallAction'
+	'{'
+		('predecessor' predecessor=[servicebehavior::AbstractAction|EString])?
+		('successor' successor=[servicebehavior::AbstractAction|EString])?
+		'signature' signature=[repository::Signature|EString]
+		'requiredRole' requiredRole=[repository::RequiredRole|EString]
+    '}';
+
+PassiveResourceSpecification returns resourceconfiguration::PassiveResourceSpecification:
+	'PassiveResourceSpecification'
+	id=EString
+	'{'
+		'name' name=EString
+		'passiveResourceType' passiveResourceType=[resourcetype::PassiveResourceType|EString]
+		'capacity' capacity=PassiveResourceCapacity
+    '}';
+
+PassiveResourceCapacity returns resourceconfiguration::PassiveResourceCapacity:
+	'PassiveResourceCapacity'
+	id=EString
+	'{'
+		'name' name=EString
+		'capacity' capacity=EBigInteger
+    '}';
+
+PassiveResourceType returns resourcetype::PassiveResourceType:
+	'PassiveResourceType'
+	id=EString
+	'{'
+		'name' name=EString
+    '}';
+
+EBigInteger returns ecore::EBigInteger:
+	'-'? INT;
+
+ResourceDemandSpecification returns servicebehavior::ResourceDemandSpecification:
+	'ResourceDemandSpecification'
+	'{'
+		'processingResourceType' processingResourceType=[resourcetype::ProcessingResourceType|EString]
+    '}';
+
+ProcessingResourceType_Impl returns resourcetype::ProcessingResourceType:
+	'ProcessingResourceType'
+	id=EString
+	'{'
+		'name' name=EString
+    '}';
+
+CommunicationLinkResourceType returns resourcetype::CommunicationLinkResourceType:
+	'CommunicationLinkResourceType'
+	id=EString
+	'{'
+		'name' name=EString
+    '}';
+
+EBoolean returns ecore::EBoolean:
+	'true' | 'false';
+
+BranchTransition returns servicebehavior::BranchTransition:
+	'BranchTransition'
+	id=EString
+	'{'
+		'name' name=EString
+		'branchBehavior' branchBehavior=ComponentInternalBehavior
+    '}';
+
+BranchProbabilities returns servicebehavior::BranchProbabilities:
+	'BranchProbabilities'
+	'{'
+		'probabilities' probabilities=[functions::RandomVariable|EString]
+    '}';
+
+RandomVariable returns functions::RandomVariable:
+	'RandomVariable'
+	'{'
+		'specification' specification=EString
+		'probFunction' probFunction=[functions::ProbabilityFunction|EString]
+    '}';
+
+ProbabilityMassFunction returns functions::ProbabilityMassFunction:
+	{functions::ProbabilityMassFunction}
+	'ProbabilityMassFunction'
+	'{'
+		('sample' '{' sample+=Sample ( "," sample+=Sample)* '}' )?
+    '}';
+
+ProbabilityDensityFunction_Impl returns functions::ProbabilityDensityFunction:
+	{functions::ProbabilityDensityFunction}
+	'ProbabilityDensityFunction'
+;
+
+BoxedPDF returns functions::BoxedPDF:
+	{functions::BoxedPDF}
+	'BoxedPDF'
+	'{'
+		('sample' '{' sample+=ContinuousSample ( "," sample+=ContinuousSample)* '}' )?
+    '}';
+
+ContinuousPDF_Impl returns functions::ContinuousPDF:
+	{functions::ContinuousPDF}
+	'ContinuousPDF'
+;
+
+NormalDistribution returns functions::NormalDistribution:
+	'NormalDistribution'
+	'{'
+		'mu' mu=EBigDecimal
+		'sigma' sigma=EBigDecimal
+    '}';
+
+ExponentialDistribution returns functions::ExponentialDistribution:
+	'ExponentialDistribution'
+	'{'
+		'rate' rate=EBigDecimal
+    '}';
+
+Sample returns functions::Sample:
+	'Sample'
+	'{'
+		'probability' probability=EBigDecimal
+		'value' value=[ecore::EObject|EString]
+    '}';
+
+EObject returns ecore::EObject:
+	{ecore::EObject}
+	'EObject'
+;
+
+EBigDecimal returns ecore::EBigDecimal:
+	INT? '.' INT;
+
+ContinuousSample returns functions::ContinuousSample:
+	'ContinuousSample'
+	'{'
+		'value' value=EBigDecimal
+		'probability' probability=EBigDecimal
+    '}';
+
+LoopIterationCountDistribution returns servicebehavior::LoopIterationCountDistribution:
+	'LoopIterationCountDistribution'
+	'{'
+		'loopIterationCountDistribution' loopIterationCountDistribution=[functions::RandomVariable|EString]
+    '}';
+
+AssemblyContext returns repository::AssemblyContext:
+	'AssemblyContext'
+	id=EString
+	'{'
+		'name' name=EString
+		'encapsulatedComponent' encapsulatedComponent=[repository::RepositoryComponent|EString]
+    '}';
+
+AssemblyConnector returns repository::AssemblyConnector:
+	'AssemblyConnector'
+	id=EString
+	'{'
+		'name' name=EString
+		'requiredRole' requiredRole=[repository::RequiredRole|EString]
+		'providedRole' providedRole=[repository::ProvidedRole|EString]
+		'providingAssemblyContext' providingAssemblyContext=[repository::AssemblyContext|EString]
+		'requiringAssemblyContext' requiringAssemblyContext=[repository::AssemblyContext|EString]
+    '}';
+
+ProvidedDelegationConnector returns repository::ProvidedDelegationConnector:
+	'ProvidedDelegationConnector'
+	id=EString
+	'{'
+		'name' name=EString
+		'assemblyContext' assemblyContext=[repository::AssemblyContext|EString]
+		'innerProvidedRole' innerProvidedRole=[repository::ProvidedRole|EString]
+		'outerProvidedRole' outerProvidedRole=[repository::ProvidedRole|EString]
+    '}';
+
+RequiredDelegationConnector returns repository::RequiredDelegationConnector:
+	'RequiredDelegationConnector'
+	id=EString
+	'{'
+		'name' name=EString
+		'assemblyContext' assemblyContext=[repository::AssemblyContext|EString]
+		'innerRequiredRole' innerRequiredRole=[repository::RequiredRole|EString]
+		'outerRequiredRole' outerRequiredRole=[repository::RequiredRole|EString]
+    '}';
+
+enum CharacterizationType returns CharacterizationType:
+	VALUE = 'VALUE' | NUMBER_OF_ELEMENTS = 'NUMBER_OF_ELEMENTS';
+
+ExternalCall_Impl returns servicebehavior::ExternalCall:
+	'ExternalCall'
+	'{'
+		'signature' signature=[repository::Signature|EString]
+		'requiredRole' requiredRole=[repository::RequiredRole|EString]
+    '}';
+
+ExternalCallFrequency returns servicebehavior::ExternalCallFrequency:
+	'ExternalCallFrequency'
+	'{'
+		'externalCall' externalCall=ExternalCall
+		'frequency' frequency=CallFrequency
+    '}';
+
+CallFrequency returns servicebehavior::CallFrequency:
+	'CallFrequency'
+	'{'
+		'frequency' frequency=[functions::RandomVariable|EString]
+    '}';
+
+DependencyRelationship returns DependencyRelationship:
+	'DependencyRelationship'
+	'{'
+		'surroundingEntity' surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+		'influencedVariable' influencedVariable=[InfluencedVariable|EString]
+		'influencingParameter' influencingParameter=[InfluencingParameter|EString]
+    '}';
+
+CorrelationRelationship returns CorrelationRelationship:
+	'CorrelationRelationship'
+	'{'
+		'surroundingEntity' surroundingEntity=[repository::InterfaceProvidingRequiringEntity|EString]
+		'leftInfluencingParameter' leftInfluencingParameter=[InfluencingParameter|EString]
+		'rightInfluencingParameter' rightInfluencingParameter=[InfluencingParameter|EString]
+		'leftComponentInstanceReference' leftComponentInstanceReference=ComponentInstanceReference
+		'rightComponentInstanceReference' rightComponentInstanceReference=ComponentInstanceReference
+    '}';
+
+InfluencedVariable returns InfluencedVariable:
+	{InfluencedVariable}
+	'InfluencedVariable'
+	'{'
+		('controlFlowVariable' controlFlowVariable=[ControlFlowSpecification|EString])?
+		('resourceDemand' resourceDemand=[servicebehavior::ResourceDemandSpecification|EString])?
+		('responseTime' responseTime=[servicebehavior::ResponseTimeSpecification|EString])?
+    '}';
+
+ComponentInstanceReference returns ComponentInstanceReference:
+	{ComponentInstanceReference}
+	'ComponentInstanceReference'
+	'{'
+		('assemblies' '(' assemblies+=[repository::AssemblyContext|EString] ( "," assemblies+=[repository::AssemblyContext|EString])* ')' )?
+    '}';
diff --git a/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLRuntimeModule.java b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLRuntimeModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..ecb586b786740890942041da99cb9183d2da121e
--- /dev/null
+++ b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLRuntimeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text;
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class RepositoryDSLRuntimeModule extends edu.kit.ipd.descartes.mm.applicationlevel.repository.text.AbstractRepositoryDSLRuntimeModule {
+
+}
diff --git a/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLStandaloneSetup.java b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLStandaloneSetup.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed94a1a9ec69361192beb88ed636da72b1d0e9ef
--- /dev/null
+++ b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/RepositoryDSLStandaloneSetup.java
@@ -0,0 +1,14 @@
+
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text;
+
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry
+ */
+public class RepositoryDSLStandaloneSetup extends RepositoryDSLStandaloneSetupGenerated{
+
+	public static void doSetup() {
+		new RepositoryDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/formatting/RepositoryDSLFormatter.java b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/formatting/RepositoryDSLFormatter.java
new file mode 100644
index 0000000000000000000000000000000000000000..c5c5dbedcfac2b727748e95a1e6339479cad2303
--- /dev/null
+++ b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/formatting/RepositoryDSLFormatter.java
@@ -0,0 +1,39 @@
+/*
+ * generated by Xtext
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.formatting;
+
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.util.Pair;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it 
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+public class RepositoryDSLFormatter extends AbstractDeclarativeFormatter {
+	
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+		edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services.RepositoryDSLGrammarAccess f = (edu.kit.ipd.descartes.mm.applicationlevel.repository.text.services.RepositoryDSLGrammarAccess) getGrammarAccess();
+		for(Pair<Keyword, Keyword> pair: f.findKeywordPairs("{", "}")) {
+			c.setIndentation(pair.getFirst(), pair.getSecond());
+			c.setLinewrap(1).after(pair.getFirst());
+			c.setLinewrap(1).before(pair.getSecond());
+			c.setLinewrap(1).after(pair.getSecond());
+		}
+		for(Keyword comma: f.findKeywords(",")) {
+			c.setNoLinewrap().before(comma);
+			c.setNoSpace().before(comma);
+			c.setLinewrap().after(comma);
+		}
+		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+		c.setLinewrap(0, 1, 1).after(f.getML_COMMENTRule());
+	}
+}
diff --git a/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/scoping/RepositoryDSLScopeProvider.java b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/scoping/RepositoryDSLScopeProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea05898bd8d6d4dcd93e2296d8e18e27a0984a65
--- /dev/null
+++ b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/scoping/RepositoryDSLScopeProvider.java
@@ -0,0 +1,17 @@
+/*
+ * generated by Xtext
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.scoping;
+
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it 
+ *
+ */
+public class RepositoryDSLScopeProvider extends AbstractDeclarativeScopeProvider {
+
+}
diff --git a/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/validation/RepositoryDSLJavaValidator.java b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/validation/RepositoryDSLJavaValidator.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ee02e6109022b29170ab41555fbaa5f46d974d2
--- /dev/null
+++ b/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/text/validation/RepositoryDSLJavaValidator.java
@@ -0,0 +1,13 @@
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.text.validation;
+ 
+
+public class RepositoryDSLJavaValidator extends AbstractRepositoryDSLJavaValidator {
+
+//	@Check
+//	public void checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.getName().charAt(0))) {
+//			warning("Name should start with a capital", MyDslPackage.Literals.GREETING__NAME);
+//		}
+//	}
+
+}