From 0aa18d6cff770de7e0f39ad0f26775a20dc86e8a Mon Sep 17 00:00:00 2001
From: Steffen Slavetinsky <s_slavet@ira.uka.de>
Date: Tue, 18 Jun 2013 19:33:34 +0000
Subject: [PATCH] adapted stalang to modified Metamodel

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@12145 9e42b895-fcda-4063-8a3b-11be15eb1bbd
---
 .../mm/adaptation/StaAdaptationLanguage.xmi   |  33 +-
 ...daptationLanguageParsetreeConstructor.java | 245 +++++++-
 .../internal/InternalStaAdaptationLanguage.g  |  75 ++-
 .../InternalStaAdaptationLanguage.tokens      |   8 +-
 .../InternalStaAdaptationLanguageLexer.java   | 535 +++++++++--------
 .../InternalStaAdaptationLanguageParser.java  | 538 ++++++++++++------
 .../StaAdaptationLanguageGrammarAccess.java   |  69 ++-
 .../mm/adaptation/StaAdaptationLanguage.xtext |   6 +-
 8 files changed, 1039 insertions(+), 470 deletions(-)

diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xmi b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xmi
index cbe66cdc..d7e65ae8 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xmi
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xmi
@@ -254,23 +254,23 @@
         <elements xsi:type="xtext:Keyword" value="triggeringEvents"/>
         <elements xsi:type="xtext:Keyword" value="="/>
         <elements xsi:type="xtext:Assignment" feature="triggeringEvents" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value="tactics"/>
         <elements xsi:type="xtext:Keyword" value=":"/>
         <elements xsi:type="xtext:Assignment" feature="tactics" operator="+=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Keyword" value=","/>
           <elements xsi:type="xtext:Assignment" feature="tactics" operator="+=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.28"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
           </elements>
         </elements>
         <elements xsi:type="xtext:Keyword" value="weightingFunction"/>
         <elements xsi:type="xtext:Keyword" value=":"/>
         <elements xsi:type="xtext:Assignment" feature="weightingFunction" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.29"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.30"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value="}"/>
       </alternatives>
@@ -454,8 +454,25 @@
           <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value="="/>
-        <elements xsi:type="xtext:Assignment" feature="specification" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.4"/>
+        <elements xsi:type="xtext:Assignment" feature="specifications" 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="specifications" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.27"/>
+          </elements>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="Specification">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.descartes-research.net/metamodel/adaptation/0.1#//Specification"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value="Specification"/>
+        <elements xsi:type="xtext:Assignment" feature="value" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.20"/>
         </elements>
       </alternatives>
     </rules>
@@ -513,12 +530,12 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="{"/>
         <elements xsi:type="xtext:Assignment" feature="weightedMetrics" operator="+=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+          <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="weightedMetrics" operator="+=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
           </elements>
         </elements>
         <elements xsi:type="xtext:Keyword" value="}"/>
diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parseTreeConstruction/StaAdaptationLanguageParsetreeConstructor.java b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parseTreeConstruction/StaAdaptationLanguageParsetreeConstructor.java
index db779b5a..ea07ca65 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parseTreeConstruction/StaAdaptationLanguageParsetreeConstructor.java
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parseTreeConstruction/StaAdaptationLanguageParsetreeConstructor.java
@@ -52,15 +52,16 @@ protected class ThisRootNode extends RootToken {
 			case 19: return new SetOfConfigurations_SetOfConfigurationsKeyword(this, this, 19, inst);
 			case 20: return new OclConstraint_OclConstraintKeyword(this, this, 20, inst);
 			case 21: return new Objective_Group(this, this, 21, inst);
-			case 22: return new Event_NameAssignment(this, this, 22, inst);
-			case 23: return new WeightedTactic_Group(this, this, 23, inst);
-			case 24: return new WeightingFunction_Group(this, this, 24, inst);
-			case 25: return new Impact_ImpactKeyword(this, this, 25, inst);
-			case 26: return new Result_ResultKeyword(this, this, 26, inst);
-			case 27: return new MetricValue_MetricValueKeyword(this, this, 27, inst);
-			case 28: return new MeasuredEntity_MeasuredEntityKeyword(this, this, 28, inst);
-			case 29: return new MetricType_Group(this, this, 29, inst);
-			case 30: return new WeightedMetric_Group(this, this, 30, inst);
+			case 22: return new Specification_Group(this, this, 22, inst);
+			case 23: return new Event_NameAssignment(this, this, 23, inst);
+			case 24: return new WeightedTactic_Group(this, this, 24, inst);
+			case 25: return new WeightingFunction_Group(this, this, 25, inst);
+			case 26: return new Impact_ImpactKeyword(this, this, 26, inst);
+			case 27: return new Result_ResultKeyword(this, this, 27, inst);
+			case 28: return new MetricValue_MetricValueKeyword(this, this, 28, inst);
+			case 29: return new MeasuredEntity_MeasuredEntityKeyword(this, this, 29, inst);
+			case 30: return new MetricType_Group(this, this, 30, inst);
+			case 31: return new WeightedMetric_Group(this, this, 31, inst);
 			default: return null;
 		}	
 	}	
@@ -4280,11 +4281,11 @@ protected class OclConstraint_OclConstraintKeyword extends KeywordToken  {
  * 		'specification' specification=EString
  * 	'}'
  * * / Objective:
- * 	"Objective" name=EString "=" specification=EString;
+ * 	"Objective" name=EString "=" specifications+=Specification ("," specifications+=Specification)*;
  *
  **/
 
-// "Objective" name=EString "=" specification=EString
+// "Objective" name=EString "=" specifications+=Specification ("," specifications+=Specification)*
 protected class Objective_Group extends GroupToken {
 	
 	public Objective_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -4299,7 +4300,8 @@ protected class Objective_Group extends GroupToken {
     @Override
 	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
 		switch(index) {
-			case 0: return new Objective_SpecificationAssignment_3(lastRuleCallOrigin, this, 0, inst);
+			case 0: return new Objective_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Objective_SpecificationsAssignment_3(lastRuleCallOrigin, this, 1, inst);
 			default: return null;
 		}	
 	}
@@ -4390,33 +4392,232 @@ protected class Objective_EqualsSignKeyword_2 extends KeywordToken  {
 
 }
 
-// specification=EString
-protected class Objective_SpecificationAssignment_3 extends AssignmentToken  {
+// specifications+=Specification
+protected class Objective_SpecificationsAssignment_3 extends AssignmentToken  {
 	
-	public Objective_SpecificationAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+	public Objective_SpecificationsAssignment_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
 		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
 	}
 	
 	@Override
 	public Assignment getGrammarElement() {
-		return grammarAccess.getObjectiveAccess().getSpecificationAssignment_3();
+		return grammarAccess.getObjectiveAccess().getSpecificationsAssignment_3();
 	}
 
     @Override
 	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
 		switch(index) {
-			case 0: return new Objective_EqualsSignKeyword_2(lastRuleCallOrigin, this, 0, inst);
+			case 0: return new Specification_Group(this, 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.getObjectiveAccess().getSpecificationEStringParserRuleCall_3_0(), value, null)) {
+		if((value = eObjectConsumer.getConsumable("specifications",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("specifications");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getObjectiveAccess().getSpecificationsSpecificationParserRuleCall_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 Objective_EqualsSignKeyword_2(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+// ("," specifications+=Specification)*
+protected class Objective_Group_4 extends GroupToken {
+	
+	public Objective_Group_4(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getObjectiveAccess().getGroup_4();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Objective_SpecificationsAssignment_4_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// ","
+protected class Objective_CommaKeyword_4_0 extends KeywordToken  {
+	
+	public Objective_CommaKeyword_4_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getObjectiveAccess().getCommaKeyword_4_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Objective_Group_4(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new Objective_SpecificationsAssignment_3(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// specifications+=Specification
+protected class Objective_SpecificationsAssignment_4_1 extends AssignmentToken  {
+	
+	public Objective_SpecificationsAssignment_4_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getObjectiveAccess().getSpecificationsAssignment_4_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Specification_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("specifications",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("specifications");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getSpecificationRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getObjectiveAccess().getSpecificationsSpecificationParserRuleCall_4_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 Objective_CommaKeyword_4_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
+
+/************ end Rule Objective ****************/
+
+
+/************ begin Rule Specification ****************
+ *
+ * Specification:
+ * 	"Specification" value=EDouble;
+ *
+ **/
+
+// "Specification" value=EDouble
+protected class Specification_Group extends GroupToken {
+	
+	public Specification_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getSpecificationAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Specification_ValueAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getSpecificationRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// "Specification"
+protected class Specification_SpecificationKeyword_0 extends KeywordToken  {
+	
+	public Specification_SpecificationKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getSpecificationAccess().getSpecificationKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// value=EDouble
+protected class Specification_ValueAssignment_1 extends AssignmentToken  {
+	
+	public Specification_ValueAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getSpecificationAccess().getValueAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new Specification_SpecificationKeyword_0(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.getSpecificationAccess().getValueEDoubleParserRuleCall_1_0(), value, null)) {
 			type = AssignmentType.DATATYPE_RULE_CALL;
-			element = grammarAccess.getObjectiveAccess().getSpecificationEStringParserRuleCall_3_0();
+			element = grammarAccess.getSpecificationAccess().getValueEDoubleParserRuleCall_1_0();
 			return obj;
 		}
 		return null;
@@ -4425,7 +4626,7 @@ protected class Objective_SpecificationAssignment_3 extends AssignmentToken  {
 }
 
 
-/************ end Rule Objective ****************/
+/************ end Rule Specification ****************/
 
 
 /************ begin Rule Event ****************
diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g
index 0c018370..c5d100d8 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g
@@ -1488,17 +1488,82 @@ ruleObjective returns [EObject current=null]
 (
 (
 		{ 
-	        newCompositeNode(grammarAccess.getObjectiveAccess().getSpecificationEStringParserRuleCall_3_0()); 
+	        newCompositeNode(grammarAccess.getObjectiveAccess().getSpecificationsSpecificationParserRuleCall_3_0()); 
 	    }
-		lv_specification_3_0=ruleEString		{
+		lv_specifications_3_0=ruleSpecification		{
 	        if ($current==null) {
 	            $current = createModelElementForParent(grammarAccess.getObjectiveRule());
 	        }
+       		add(
+       			$current, 
+       			"specifications",
+        		lv_specifications_3_0, 
+        		"Specification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getObjectiveAccess().getCommaKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getObjectiveAccess().getSpecificationsSpecificationParserRuleCall_4_1_0()); 
+	    }
+		lv_specifications_5_0=ruleSpecification		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getObjectiveRule());
+	        }
+       		add(
+       			$current, 
+       			"specifications",
+        		lv_specifications_5_0, 
+        		"Specification");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleSpecification
+entryRuleSpecification returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSpecificationRule()); }
+	 iv_ruleSpecification=ruleSpecification 
+	 { $current=$iv_ruleSpecification.current; } 
+	 EOF 
+;
+
+// Rule Specification
+ruleSpecification returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='Specification' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getSpecificationAccess().getSpecificationKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSpecificationAccess().getValueEDoubleParserRuleCall_1_0()); 
+	    }
+		lv_value_1_0=ruleEDouble		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSpecificationRule());
+	        }
        		set(
        			$current, 
-       			"specification",
-        		lv_specification_3_0, 
-        		"EString");
+       			"value",
+        		lv_value_1_0, 
+        		"EDouble");
 	        afterParserOrEnumRuleCall();
 	    }
 
diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.tokens b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.tokens
index 8f0462d2..76df380e 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.tokens
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.tokens
@@ -20,6 +20,7 @@ T__11=11
 T__14=14
 T__13=13
 RULE_INT=6
+T__50=50
 T__42=42
 T__43=43
 T__40=40
@@ -34,8 +35,8 @@ RULE_SL_COMMENT=8
 RULE_ML_COMMENT=7
 T__30=30
 T__31=31
-T__32=32
 RULE_STRING=4
+T__32=32
 T__33=33
 T__34=34
 T__35=35
@@ -53,7 +54,7 @@ RULE_WS=9
 'output'=23
 'StopAction'=36
 'e'=44
-'lastImpact'=48
+'lastImpact'=49
 'BranchAction'=38
 '='=30
 'weightingFunction'=32
@@ -76,7 +77,8 @@ RULE_WS=9
 'AdaptationProcess'=11
 'Action'=25
 'PropertyRange'=45
-'ref'=49
+'Specification'=48
+'ref'=50
 ':'=15
 '-'=41
 'tactics'=17
diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageLexer.java b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageLexer.java
index 8bfcdfc4..ea1dcbe0 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageLexer.java
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageLexer.java
@@ -35,6 +35,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
     public static final int T__14=14;
     public static final int T__13=13;
     public static final int RULE_INT=6;
+    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;
@@ -49,8 +50,8 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
     public static final int RULE_ML_COMMENT=7;
     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 RULE_STRING=4;
+    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;
@@ -846,10 +847,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:48:7: ( 'lastImpact' )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:48:9: 'lastImpact'
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:48:7: ( 'Specification' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:48:9: 'Specification'
             {
-            match("lastImpact"); 
+            match("Specification"); 
 
 
             }
@@ -867,10 +868,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:49:7: ( 'ref' )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:49:9: 'ref'
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:49:7: ( 'lastImpact' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:49:9: 'lastImpact'
             {
-            match("ref"); 
+            match("lastImpact"); 
 
 
             }
@@ -883,15 +884,36 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
     }
     // $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.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:50:7: ( 'ref' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:50:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
     // $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.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1848:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1848:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1913:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1913:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1848:11: ( '^' )?
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1913:11: ( '^' )?
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -900,7 +922,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             }
             switch (alt1) {
                 case 1 :
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1848:11: '^'
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1913:11: '^'
                     {
                     match('^'); 
 
@@ -918,7 +940,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
                 recover(mse);
                 throw mse;}
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1848:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1913:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             loop2:
             do {
                 int alt2=2;
@@ -967,10 +989,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1850:10: ( ( '0' .. '9' )+ )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1850:12: ( '0' .. '9' )+
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1915:10: ( ( '0' .. '9' )+ )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1915:12: ( '0' .. '9' )+
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1850:12: ( '0' .. '9' )+
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1915:12: ( '0' .. '9' )+
             int cnt3=0;
             loop3:
             do {
@@ -984,7 +1006,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
 
                 switch (alt3) {
             	case 1 :
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1850:13: '0' .. '9'
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1915:13: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -1016,10 +1038,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:13: ( ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:15: ( '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1037,10 +1059,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             }
             switch (alt6) {
                 case 1 :
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:16: '\"' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
                     {
                     match('\"'); 
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:20: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop4:
                     do {
                         int alt4=3;
@@ -1056,7 +1078,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
 
                         switch (alt4) {
                     	case 1 :
-                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:21: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917: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') ) {
@@ -1072,7 +1094,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:66: ~ ( ( '\\\\' | '\"' ) )
+                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:66: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -1097,10 +1119,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
                     }
                     break;
                 case 2 :
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:86: '\\'' ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
                     {
                     match('\''); 
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:91: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' ) | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop5:
                     do {
                         int alt5=3;
@@ -1116,7 +1138,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
 
                         switch (alt5) {
                     	case 1 :
-                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:92: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | 'u' | '\"' | '\\'' | '\\\\' )
+                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917: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') ) {
@@ -1132,7 +1154,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1852:137: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1917:137: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -1175,12 +1197,12 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1854:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1854:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1919:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1919:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1854:24: ( options {greedy=false; } : . )*
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1919:24: ( options {greedy=false; } : . )*
             loop7:
             do {
                 int alt7=2;
@@ -1205,7 +1227,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
 
                 switch (alt7) {
             	case 1 :
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1854:52: .
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1919:52: .
             	    {
             	    matchAny(); 
 
@@ -1235,12 +1257,12 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop8:
             do {
                 int alt8=2;
@@ -1253,7 +1275,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
 
                 switch (alt8) {
             	case 1 :
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921: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();
@@ -1273,7 +1295,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
                 }
             } while (true);
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:40: ( ( '\\r' )? '\\n' )?
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921:40: ( ( '\\r' )? '\\n' )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1282,9 +1304,9 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             }
             switch (alt10) {
                 case 1 :
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:41: ( '\\r' )? '\\n'
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921:41: ( '\\r' )? '\\n'
                     {
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:41: ( '\\r' )?
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921:41: ( '\\r' )?
                     int alt9=2;
                     int LA9_0 = input.LA(1);
 
@@ -1293,7 +1315,7 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
                     }
                     switch (alt9) {
                         case 1 :
-                            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1856:41: '\\r'
+                            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1921:41: '\\r'
                             {
                             match('\r'); 
 
@@ -1325,10 +1347,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1858:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1858:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1923:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1923:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1858:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1923:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt11=0;
             loop11:
             do {
@@ -1382,8 +1404,8 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1860:16: ( . )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1860:18: .
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1925:16: ( . )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1925:18: .
             {
             matchAny(); 
 
@@ -1398,8 +1420,8 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.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 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt12=46;
+        // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.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 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=47;
         alt12 = dfa12.predict(input);
         switch (alt12) {
             case 1 :
@@ -1676,49 +1698,56 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
                 }
                 break;
             case 40 :
-                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:244: RULE_ID
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:244: T__50
                 {
-                mRULE_ID(); 
+                mT__50(); 
 
                 }
                 break;
             case 41 :
-                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:252: RULE_INT
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:250: RULE_ID
                 {
-                mRULE_INT(); 
+                mRULE_ID(); 
 
                 }
                 break;
             case 42 :
-                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:261: RULE_STRING
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:258: RULE_INT
                 {
-                mRULE_STRING(); 
+                mRULE_INT(); 
 
                 }
                 break;
             case 43 :
-                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:273: RULE_ML_COMMENT
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:267: RULE_STRING
                 {
-                mRULE_ML_COMMENT(); 
+                mRULE_STRING(); 
 
                 }
                 break;
             case 44 :
-                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:289: RULE_SL_COMMENT
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:279: RULE_ML_COMMENT
                 {
-                mRULE_SL_COMMENT(); 
+                mRULE_ML_COMMENT(); 
 
                 }
                 break;
             case 45 :
-                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:305: RULE_WS
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:295: RULE_SL_COMMENT
                 {
-                mRULE_WS(); 
+                mRULE_SL_COMMENT(); 
 
                 }
                 break;
             case 46 :
-                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:313: RULE_ANY_OTHER
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:311: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 47 :
+                // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1:319: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -1733,102 +1762,105 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
     protected DFA12 dfa12 = new DFA12(this);
     static final String DFA12_eotS =
         "\1\uffff\1\46\1\uffff\2\46\2\uffff\3\46\1\uffff\5\46\1\uffff\4\46"+
-        "\2\uffff\1\101\1\102\3\46\1\43\2\uffff\3\43\2\uffff\2\46\2\uffff"+
-        "\3\46\2\uffff\4\46\1\uffff\10\46\1\uffff\4\46\4\uffff\3\46\5\uffff"+
-        "\16\46\1\164\15\46\1\u0082\14\46\1\uffff\15\46\1\uffff\7\46\1\u00a4"+
-        "\21\46\1\u00b7\6\46\1\u00be\1\uffff\1\46\1\u00c0\20\46\1\uffff\1"+
-        "\u00d1\1\46\1\u00d3\3\46\1\uffff\1\46\1\uffff\20\46\1\uffff\1\46"+
-        "\1\uffff\6\46\1\u00ef\22\46\1\u0103\1\46\1\uffff\10\46\1\u010d\6"+
-        "\46\1\u0114\1\u0115\1\46\1\u0117\1\uffff\2\46\1\u011a\3\46\1\u011e"+
-        "\2\46\1\uffff\1\u0121\5\46\2\uffff\1\46\1\uffff\1\46\1\u0129\1\uffff"+
-        "\2\46\1\u012c\1\uffff\2\46\1\uffff\7\46\1\uffff\2\46\1\uffff\1\u0138"+
-        "\12\46\1\uffff\1\u0143\11\46\1\uffff\2\46\1\u014f\2\46\1\u0152\5"+
-        "\46\1\uffff\1\46\1\u0159\1\uffff\3\46\1\u015d\2\46\1\uffff\2\46"+
-        "\1\u0162\1\uffff\4\46\1\uffff\3\46\1\u016a\3\46\1\uffff\6\46\1\u0174"+
-        "\1\46\1\u0176\1\uffff\1\46\1\uffff\1\u0178\1\uffff";
+        "\2\uffff\1\102\1\103\3\46\1\43\2\uffff\3\43\2\uffff\2\46\2\uffff"+
+        "\3\46\2\uffff\4\46\1\uffff\11\46\1\uffff\4\46\4\uffff\3\46\5\uffff"+
+        "\16\46\1\166\16\46\1\u0085\14\46\1\uffff\16\46\1\uffff\7\46\1\u00a8"+
+        "\22\46\1\u00bc\6\46\1\u00c3\1\uffff\1\46\1\u00c5\21\46\1\uffff\1"+
+        "\u00d7\1\46\1\u00d9\3\46\1\uffff\1\46\1\uffff\21\46\1\uffff\1\46"+
+        "\1\uffff\6\46\1\u00f6\23\46\1\u010b\1\46\1\uffff\11\46\1\u0116\6"+
+        "\46\1\u011d\1\u011e\1\46\1\u0120\1\uffff\2\46\1\u0123\4\46\1\u0128"+
+        "\2\46\1\uffff\1\u012b\5\46\2\uffff\1\46\1\uffff\1\46\1\u0133\1\uffff"+
+        "\3\46\1\u0137\1\uffff\2\46\1\uffff\7\46\1\uffff\3\46\1\uffff\1\u0144"+
+        "\11\46\1\u014e\1\46\1\uffff\1\u0150\10\46\1\uffff\1\46\1\uffff\2"+
+        "\46\1\u015c\2\46\1\u015f\5\46\1\uffff\1\46\1\u0166\1\uffff\3\46"+
+        "\1\u016a\2\46\1\uffff\2\46\1\u016f\1\uffff\4\46\1\uffff\3\46\1\u0177"+
+        "\3\46\1\uffff\6\46\1\u0181\1\46\1\u0183\1\uffff\1\46\1\uffff\1\u0185"+
+        "\1\uffff";
     static final String DFA12_eofS =
-        "\u0179\uffff";
+        "\u0186\uffff";
     static final String DFA12_minS =
         "\1\0\1\143\1\uffff\1\157\1\143\2\uffff\1\141\1\164\1\141\1\uffff"+
         "\1\141\1\155\1\142\2\145\1\uffff\2\145\1\157\1\162\2\uffff\2\60"+
         "\1\162\1\142\1\141\1\101\2\uffff\2\0\1\52\2\uffff\1\141\1\164\2"+
         "\uffff\1\141\1\164\1\141\2\uffff\1\143\1\151\2\162\1\uffff\1\143"+
-        "\2\160\1\164\1\152\1\146\1\141\1\164\1\uffff\1\151\1\163\1\157\1"+
-        "\141\4\uffff\1\157\1\152\1\163\5\uffff\1\160\1\151\1\154\1\151\1"+
-        "\160\1\164\1\147\2\141\1\164\1\165\1\154\1\160\1\145\1\60\1\141"+
-        "\1\162\1\160\1\117\1\147\1\143\1\160\1\156\1\160\1\145\2\164\1\157"+
-        "\1\60\1\157\1\164\1\151\1\147\1\164\1\155\1\151\1\164\1\145\1\165"+
-        "\1\143\1\162\1\uffff\2\164\1\101\1\146\1\150\1\162\1\101\1\143\1"+
-        "\145\1\143\1\111\1\141\1\156\1\uffff\1\156\1\141\1\143\3\145\1\143"+
-        "\1\60\1\155\2\164\1\162\1\145\1\101\1\143\1\103\1\164\1\151\1\143"+
-        "\1\150\1\162\1\164\1\155\1\164\1\157\1\60\1\163\1\164\1\163\1\162"+
-        "\1\147\1\164\1\60\1\uffff\1\145\1\60\1\151\1\145\1\147\1\143\1\164"+
-        "\1\157\1\151\1\160\1\164\1\101\1\164\1\151\1\160\1\151\1\156\1\145"+
-        "\1\uffff\1\60\1\151\1\60\2\151\1\145\1\uffff\1\156\1\uffff\1\166"+
-        "\1\144\1\171\1\164\1\151\2\156\1\164\1\151\1\143\1\171\1\166\1\141"+
-        "\1\157\1\101\1\146\1\uffff\1\157\1\uffff\1\156\1\145\1\162\1\164"+
-        "\1\145\1\101\1\60\1\151\1\157\1\146\1\147\1\151\1\157\1\164\1\122"+
-        "\1\145\1\143\1\156\1\143\1\145\1\156\1\147\2\163\1\145\1\60\1\144"+
-        "\1\uffff\1\157\1\156\1\151\1\106\1\157\1\156\1\151\1\141\1\60\1"+
-        "\164\1\120\1\164\1\162\1\101\1\105\2\60\1\144\1\60\1\uffff\1\141"+
-        "\1\156\1\60\1\147\1\165\1\156\1\60\1\157\1\156\1\uffff\1\60\1\162"+
-        "\1\151\1\145\1\143\1\166\2\uffff\1\120\1\uffff\1\160\1\60\1\uffff"+
-        "\1\165\1\156\1\60\1\uffff\1\156\1\147\1\uffff\2\157\1\156\1\164"+
-        "\1\145\1\154\1\164\1\uffff\1\162\1\143\1\uffff\1\60\1\145\1\143"+
-        "\1\156\1\143\1\151\1\156\3\141\1\164\1\uffff\1\60\1\145\1\117\1"+
-        "\145\1\157\1\164\1\156\2\164\1\151\1\uffff\1\163\1\160\1\60\1\156"+
-        "\1\163\1\60\2\151\1\157\1\163\1\145\1\uffff\1\117\1\60\1\uffff\2"+
-        "\157\1\156\1\60\1\162\1\160\1\uffff\2\156\1\60\1\uffff\1\141\1\145"+
-        "\1\120\1\163\1\uffff\1\164\1\162\1\157\1\60\1\151\1\141\1\151\1"+
-        "\uffff\1\157\1\164\2\156\1\151\1\164\1\60\1\157\1\60\1\uffff\1\156"+
-        "\1\uffff\1\60\1\uffff";
+        "\2\160\1\164\1\152\1\146\1\141\1\164\1\145\1\uffff\1\151\1\163\1"+
+        "\157\1\141\4\uffff\1\157\1\152\1\163\5\uffff\1\160\1\151\1\154\1"+
+        "\151\1\160\1\164\1\147\2\141\1\164\1\165\1\154\1\160\1\145\1\60"+
+        "\1\141\1\162\1\160\1\117\1\143\1\147\1\143\1\160\1\156\1\160\1\145"+
+        "\2\164\1\157\1\60\1\157\1\164\1\151\1\147\1\164\1\155\1\151\1\164"+
+        "\1\145\1\165\1\143\1\162\1\uffff\2\164\1\101\1\146\1\151\1\150\1"+
+        "\162\1\101\1\143\1\145\1\143\1\111\1\141\1\156\1\uffff\1\156\1\141"+
+        "\1\143\3\145\1\143\1\60\1\155\2\164\1\162\1\145\1\101\1\143\1\103"+
+        "\1\146\1\164\1\151\1\143\1\150\1\162\1\164\1\155\1\164\1\157\1\60"+
+        "\1\163\1\164\1\163\1\162\1\147\1\164\1\60\1\uffff\1\145\1\60\1\151"+
+        "\1\145\1\147\1\143\1\164\1\157\2\151\1\160\1\164\1\101\1\164\1\151"+
+        "\1\160\1\151\1\156\1\145\1\uffff\1\60\1\151\1\60\2\151\1\145\1\uffff"+
+        "\1\156\1\uffff\1\166\1\144\1\171\1\164\1\151\1\156\1\143\1\156\1"+
+        "\164\1\151\1\143\1\171\1\166\1\141\1\157\1\101\1\146\1\uffff\1\157"+
+        "\1\uffff\1\156\1\145\1\162\1\164\1\145\1\101\1\60\1\151\1\157\1"+
+        "\146\1\141\1\147\1\151\1\157\1\164\1\122\1\145\1\143\1\156\1\143"+
+        "\1\145\1\156\1\147\2\163\1\145\1\60\1\144\1\uffff\1\157\1\156\1"+
+        "\151\1\164\1\106\1\157\1\156\1\151\1\141\1\60\1\164\1\120\1\164"+
+        "\1\162\1\101\1\105\2\60\1\144\1\60\1\uffff\1\141\1\156\1\60\1\147"+
+        "\1\151\1\165\1\156\1\60\1\157\1\156\1\uffff\1\60\1\162\1\151\1\145"+
+        "\1\143\1\166\2\uffff\1\120\1\uffff\1\160\1\60\1\uffff\1\165\1\157"+
+        "\1\156\1\60\1\uffff\1\156\1\147\1\uffff\2\157\1\156\1\164\1\145"+
+        "\1\154\1\164\1\uffff\1\162\1\156\1\143\1\uffff\1\60\1\145\1\143"+
+        "\1\156\1\143\1\151\1\156\3\141\1\60\1\164\1\uffff\1\60\1\145\1\117"+
+        "\1\145\1\157\1\164\1\156\2\164\1\uffff\1\151\1\uffff\1\163\1\160"+
+        "\1\60\1\156\1\163\1\60\2\151\1\157\1\163\1\145\1\uffff\1\117\1\60"+
+        "\1\uffff\2\157\1\156\1\60\1\162\1\160\1\uffff\2\156\1\60\1\uffff"+
+        "\1\141\1\145\1\120\1\163\1\uffff\1\164\1\162\1\157\1\60\1\151\1"+
+        "\141\1\151\1\uffff\1\157\1\164\2\156\1\151\1\164\1\60\1\157\1\60"+
+        "\1\uffff\1\156\1\uffff\1\60\1\uffff";
     static final String DFA12_maxS =
         "\1\uffff\1\144\1\uffff\1\157\1\144\2\uffff\1\162\1\164\1\141\1\uffff"+
         "\1\141\1\156\1\165\1\145\1\164\1\uffff\2\145\1\157\1\162\2\uffff"+
         "\2\172\1\162\1\142\1\141\1\172\2\uffff\2\uffff\1\57\2\uffff\1\141"+
         "\1\164\2\uffff\1\141\1\164\1\141\2\uffff\1\143\1\151\2\162\1\uffff"+
-        "\1\143\2\160\1\164\1\152\1\146\1\162\1\164\1\uffff\1\151\1\163\1"+
-        "\157\1\141\4\uffff\1\157\1\152\1\163\5\uffff\1\160\1\151\1\154\1"+
-        "\151\1\160\1\164\1\147\2\141\1\164\1\165\1\154\1\160\1\145\1\172"+
-        "\1\141\1\162\1\160\1\117\1\147\1\143\1\160\1\156\1\160\1\145\2\164"+
-        "\1\157\1\172\1\157\1\164\1\151\1\147\1\164\1\155\1\151\1\164\1\145"+
-        "\1\165\1\143\1\162\1\uffff\2\164\1\101\1\146\1\150\1\162\1\101\1"+
-        "\143\1\145\1\143\1\111\1\151\1\156\1\uffff\1\156\1\141\1\143\3\145"+
-        "\1\143\1\172\1\155\2\164\1\162\1\145\1\101\1\143\1\103\1\164\1\151"+
-        "\1\143\1\150\1\162\1\164\1\155\1\164\1\157\1\172\1\163\1\164\1\163"+
-        "\1\162\1\147\1\164\1\172\1\uffff\1\145\1\172\1\151\1\145\1\147\1"+
-        "\143\1\164\1\157\1\151\1\160\1\164\1\101\1\164\1\151\1\160\1\151"+
-        "\1\156\1\145\1\uffff\1\172\1\151\1\172\2\151\1\145\1\uffff\1\156"+
-        "\1\uffff\1\166\1\144\1\171\1\164\1\151\2\156\1\164\1\151\1\143\1"+
-        "\171\1\166\1\141\1\157\1\101\1\146\1\uffff\1\157\1\uffff\1\156\1"+
-        "\145\1\162\1\164\1\145\1\101\1\172\1\151\1\157\1\146\1\147\1\151"+
-        "\1\157\1\164\1\122\1\145\1\143\1\156\1\143\1\145\1\156\1\147\2\163"+
-        "\1\145\1\172\1\144\1\uffff\1\157\1\156\1\151\1\106\1\157\1\156\1"+
-        "\151\1\141\1\172\1\164\1\120\1\164\1\162\1\101\1\105\2\172\1\144"+
-        "\1\172\1\uffff\1\141\1\156\1\172\1\147\1\165\1\156\1\172\1\157\1"+
-        "\156\1\uffff\1\172\1\162\1\151\1\145\1\143\1\166\2\uffff\1\120\1"+
-        "\uffff\1\160\1\172\1\uffff\1\165\1\156\1\172\1\uffff\1\156\1\147"+
-        "\1\uffff\2\157\1\156\1\164\1\145\1\154\1\164\1\uffff\1\162\1\143"+
-        "\1\uffff\1\172\1\145\1\143\1\156\1\143\1\151\1\156\3\141\1\164\1"+
-        "\uffff\1\172\1\145\1\117\1\145\1\157\1\164\1\156\2\164\1\151\1\uffff"+
-        "\1\163\1\160\1\172\1\156\1\163\1\172\2\151\1\157\1\163\1\145\1\uffff"+
-        "\1\117\1\172\1\uffff\2\157\1\156\1\172\1\162\1\160\1\uffff\2\156"+
-        "\1\172\1\uffff\1\141\1\145\1\120\1\163\1\uffff\1\164\1\162\1\157"+
-        "\1\172\1\151\1\141\1\151\1\uffff\1\157\1\164\2\156\1\151\1\164\1"+
-        "\172\1\157\1\172\1\uffff\1\156\1\uffff\1\172\1\uffff";
+        "\1\143\2\160\1\164\1\152\1\146\1\162\1\164\1\145\1\uffff\1\151\1"+
+        "\163\1\157\1\141\4\uffff\1\157\1\152\1\163\5\uffff\1\160\1\151\1"+
+        "\154\1\151\1\160\1\164\1\147\2\141\1\164\1\165\1\154\1\160\1\145"+
+        "\1\172\1\141\1\162\1\160\1\117\1\143\1\147\1\143\1\160\1\156\1\160"+
+        "\1\145\2\164\1\157\1\172\1\157\1\164\1\151\1\147\1\164\1\155\1\151"+
+        "\1\164\1\145\1\165\1\143\1\162\1\uffff\2\164\1\101\1\146\1\151\1"+
+        "\150\1\162\1\101\1\143\1\145\1\143\1\111\1\151\1\156\1\uffff\1\156"+
+        "\1\141\1\143\3\145\1\143\1\172\1\155\2\164\1\162\1\145\1\101\1\143"+
+        "\1\103\1\146\1\164\1\151\1\143\1\150\1\162\1\164\1\155\1\164\1\157"+
+        "\1\172\1\163\1\164\1\163\1\162\1\147\1\164\1\172\1\uffff\1\145\1"+
+        "\172\1\151\1\145\1\147\1\143\1\164\1\157\2\151\1\160\1\164\1\101"+
+        "\1\164\1\151\1\160\1\151\1\156\1\145\1\uffff\1\172\1\151\1\172\2"+
+        "\151\1\145\1\uffff\1\156\1\uffff\1\166\1\144\1\171\1\164\1\151\1"+
+        "\156\1\143\1\156\1\164\1\151\1\143\1\171\1\166\1\141\1\157\1\101"+
+        "\1\146\1\uffff\1\157\1\uffff\1\156\1\145\1\162\1\164\1\145\1\101"+
+        "\1\172\1\151\1\157\1\146\1\141\1\147\1\151\1\157\1\164\1\122\1\145"+
+        "\1\143\1\156\1\143\1\145\1\156\1\147\2\163\1\145\1\172\1\144\1\uffff"+
+        "\1\157\1\156\1\151\1\164\1\106\1\157\1\156\1\151\1\141\1\172\1\164"+
+        "\1\120\1\164\1\162\1\101\1\105\2\172\1\144\1\172\1\uffff\1\141\1"+
+        "\156\1\172\1\147\1\151\1\165\1\156\1\172\1\157\1\156\1\uffff\1\172"+
+        "\1\162\1\151\1\145\1\143\1\166\2\uffff\1\120\1\uffff\1\160\1\172"+
+        "\1\uffff\1\165\1\157\1\156\1\172\1\uffff\1\156\1\147\1\uffff\2\157"+
+        "\1\156\1\164\1\145\1\154\1\164\1\uffff\1\162\1\156\1\143\1\uffff"+
+        "\1\172\1\145\1\143\1\156\1\143\1\151\1\156\3\141\1\172\1\164\1\uffff"+
+        "\1\172\1\145\1\117\1\145\1\157\1\164\1\156\2\164\1\uffff\1\151\1"+
+        "\uffff\1\163\1\160\1\172\1\156\1\163\1\172\2\151\1\157\1\163\1\145"+
+        "\1\uffff\1\117\1\172\1\uffff\2\157\1\156\1\172\1\162\1\160\1\uffff"+
+        "\2\156\1\172\1\uffff\1\141\1\145\1\120\1\163\1\uffff\1\164\1\162"+
+        "\1\157\1\172\1\151\1\141\1\151\1\uffff\1\157\1\164\2\156\1\151\1"+
+        "\164\1\172\1\157\1\172\1\uffff\1\156\1\uffff\1\172\1\uffff";
     static final String DFA12_acceptS =
         "\2\uffff\1\2\2\uffff\1\5\1\6\3\uffff\1\12\5\uffff\1\24\4\uffff\1"+
-        "\37\1\40\6\uffff\1\50\1\51\3\uffff\1\55\1\56\2\uffff\1\50\1\2\3"+
-        "\uffff\1\5\1\6\4\uffff\1\12\10\uffff\1\24\4\uffff\1\37\1\40\1\41"+
-        "\1\42\3\uffff\1\51\1\52\1\53\1\54\1\55\51\uffff\1\47\15\uffff\1"+
-        "\3\41\uffff\1\14\22\uffff\1\17\6\uffff\1\13\1\uffff\1\15\20\uffff"+
-        "\1\4\1\uffff\1\7\33\uffff\1\22\23\uffff\1\23\11\uffff\1\45\6\uffff"+
-        "\1\10\1\11\1\uffff\1\30\2\uffff\1\32\3\uffff\1\33\2\uffff\1\46\7"+
-        "\uffff\1\31\2\uffff\1\27\13\uffff\1\34\12\uffff\1\43\13\uffff\1"+
-        "\35\2\uffff\1\16\6\uffff\1\25\3\uffff\1\1\4\uffff\1\26\7\uffff\1"+
-        "\44\11\uffff\1\36\1\uffff\1\20\1\uffff\1\21";
+        "\37\1\40\6\uffff\1\51\1\52\3\uffff\1\56\1\57\2\uffff\1\51\1\2\3"+
+        "\uffff\1\5\1\6\4\uffff\1\12\11\uffff\1\24\4\uffff\1\37\1\40\1\41"+
+        "\1\42\3\uffff\1\52\1\53\1\54\1\55\1\56\52\uffff\1\50\16\uffff\1"+
+        "\3\42\uffff\1\14\23\uffff\1\17\6\uffff\1\13\1\uffff\1\15\21\uffff"+
+        "\1\4\1\uffff\1\7\34\uffff\1\22\24\uffff\1\23\12\uffff\1\45\6\uffff"+
+        "\1\10\1\11\1\uffff\1\30\2\uffff\1\32\4\uffff\1\33\2\uffff\1\47\7"+
+        "\uffff\1\31\3\uffff\1\27\14\uffff\1\34\11\uffff\1\46\1\uffff\1\43"+
+        "\13\uffff\1\35\2\uffff\1\16\6\uffff\1\25\3\uffff\1\1\4\uffff\1\26"+
+        "\7\uffff\1\44\11\uffff\1\36\1\uffff\1\20\1\uffff\1\21";
     static final String DFA12_specialS =
-        "\1\1\36\uffff\1\2\1\0\u0158\uffff}>";
+        "\1\0\36\uffff\1\1\1\2\u0165\uffff}>";
     static final String[] DFA12_transitionS = {
             "\11\43\2\42\2\43\1\42\22\43\1\42\1\43\1\37\4\43\1\40\4\43\1"+
             "\6\1\25\1\26\1\41\12\36\1\5\2\43\1\20\3\43\1\1\1\24\1\35\1\22"+
@@ -1850,68 +1882,67 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\64\1\63",
             "\1\66\22\uffff\1\65",
             "\1\67",
-            "\1\71\16\uffff\1\70",
+            "\1\71\12\uffff\1\72\3\uffff\1\70",
             "",
-            "\1\73",
             "\1\74",
             "\1\75",
             "\1\76",
+            "\1\77",
             "",
             "",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "\1\103",
             "\1\104",
             "\1\105",
+            "\1\106",
             "\32\46\4\uffff\1\46\1\uffff\32\46",
             "",
             "",
-            "\0\107",
-            "\0\107",
-            "\1\110\4\uffff\1\111",
+            "\0\110",
+            "\0\110",
+            "\1\111\4\uffff\1\112",
             "",
             "",
-            "\1\113",
             "\1\114",
+            "\1\115",
             "",
             "",
-            "\1\115",
             "\1\116",
             "\1\117",
+            "\1\120",
             "",
             "",
-            "\1\120",
             "\1\121",
             "\1\122",
             "\1\123",
-            "",
             "\1\124",
+            "",
             "\1\125",
             "\1\126",
             "\1\127",
             "\1\130",
             "\1\131",
-            "\1\133\15\uffff\1\134\2\uffff\1\132",
-            "\1\135",
-            "",
+            "\1\132",
+            "\1\134\15\uffff\1\135\2\uffff\1\133",
             "\1\136",
             "\1\137",
+            "",
             "\1\140",
             "\1\141",
+            "\1\142",
+            "\1\143",
             "",
             "",
             "",
             "",
-            "\1\142",
-            "\1\143",
             "\1\144",
+            "\1\145",
+            "\1\146",
             "",
             "",
             "",
             "",
             "",
-            "\1\145",
-            "\1\146",
             "\1\147",
             "\1\150",
             "\1\151",
@@ -1924,9 +1955,9 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\160",
             "\1\161",
             "\1\162",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\4\46\1\163\25\46",
-            "\1\165",
-            "\1\166",
+            "\1\163",
+            "\1\164",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\4\46\1\165\25\46",
             "\1\167",
             "\1\170",
             "\1\171",
@@ -1938,10 +1969,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\177",
             "\1\u0080",
             "\1\u0081",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u0082",
             "\1\u0083",
             "\1\u0084",
-            "\1\u0085",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u0086",
             "\1\u0087",
             "\1\u0088",
@@ -1951,10 +1982,10 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u008c",
             "\1\u008d",
             "\1\u008e",
-            "",
             "\1\u008f",
             "\1\u0090",
             "\1\u0091",
+            "",
             "\1\u0092",
             "\1\u0093",
             "\1\u0094",
@@ -1963,21 +1994,21 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u0097",
             "\1\u0098",
             "\1\u0099",
-            "\1\u009a\7\uffff\1\u009b",
+            "\1\u009a",
+            "\1\u009b",
             "\1\u009c",
-            "",
             "\1\u009d",
-            "\1\u009e",
-            "\1\u009f",
+            "\1\u009e\7\uffff\1\u009f",
             "\1\u00a0",
+            "",
             "\1\u00a1",
             "\1\u00a2",
             "\1\u00a3",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u00a4",
             "\1\u00a5",
             "\1\u00a6",
             "\1\u00a7",
-            "\1\u00a8",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u00a9",
             "\1\u00aa",
             "\1\u00ab",
@@ -1991,23 +2022,23 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u00b3",
             "\1\u00b4",
             "\1\u00b5",
-            "\12\46\7\uffff\21\46\1\u00b6\10\46\4\uffff\1\46\1\uffff\32"+
-            "\46",
+            "\1\u00b6",
+            "\1\u00b7",
             "\1\u00b8",
             "\1\u00b9",
             "\1\u00ba",
-            "\1\u00bb",
-            "\1\u00bc",
+            "\12\46\7\uffff\21\46\1\u00bb\10\46\4\uffff\1\46\1\uffff\32"+
+            "\46",
             "\1\u00bd",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "",
+            "\1\u00be",
             "\1\u00bf",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u00c0",
             "\1\u00c1",
             "\1\u00c2",
-            "\1\u00c3",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
             "\1\u00c4",
-            "\1\u00c5",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u00c6",
             "\1\u00c7",
             "\1\u00c8",
@@ -2019,22 +2050,22 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u00ce",
             "\1\u00cf",
             "\1\u00d0",
-            "",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u00d1",
             "\1\u00d2",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u00d3",
             "\1\u00d4",
             "\1\u00d5",
             "\1\u00d6",
             "",
-            "\1\u00d7",
-            "",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u00d8",
-            "\1\u00d9",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u00da",
             "\1\u00db",
             "\1\u00dc",
+            "",
             "\1\u00dd",
+            "",
             "\1\u00de",
             "\1\u00df",
             "\1\u00e0",
@@ -2045,23 +2076,23 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u00e5",
             "\1\u00e6",
             "\1\u00e7",
-            "",
             "\1\u00e8",
-            "",
             "\1\u00e9",
             "\1\u00ea",
             "\1\u00eb",
             "\1\u00ec",
             "\1\u00ed",
             "\1\u00ee",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
+            "\1\u00ef",
+            "",
             "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
             "\1\u00f3",
             "\1\u00f4",
             "\1\u00f5",
-            "\1\u00f6",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u00f7",
             "\1\u00f8",
             "\1\u00f9",
@@ -2073,72 +2104,70 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u00ff",
             "\1\u0100",
             "\1\u0101",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\22\46\1\u0102\7\46",
+            "\1\u0102",
+            "\1\u0103",
             "\1\u0104",
-            "",
             "\1\u0105",
             "\1\u0106",
             "\1\u0107",
             "\1\u0108",
             "\1\u0109",
-            "\1\u010a",
-            "\1\u010b",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\22\46\1\u010a\7\46",
             "\1\u010c",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
+            "\1\u010d",
             "\1\u010e",
             "\1\u010f",
             "\1\u0110",
             "\1\u0111",
             "\1\u0112",
             "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "\1\u0116",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "",
+            "\1\u0117",
             "\1\u0118",
             "\1\u0119",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u011a",
             "\1\u011b",
             "\1\u011c",
-            "\1\u011d",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u011f",
-            "\1\u0120",
-            "",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
+            "\1\u0121",
             "\1\u0122",
-            "\1\u0123",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u0124",
             "\1\u0125",
             "\1\u0126",
-            "",
-            "",
             "\1\u0127",
-            "",
-            "\1\u0128",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "",
+            "\1\u0129",
             "\1\u012a",
-            "\1\u012b",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u012c",
             "\1\u012d",
             "\1\u012e",
-            "",
             "\1\u012f",
             "\1\u0130",
+            "",
+            "",
             "\1\u0131",
+            "",
             "\1\u0132",
-            "\1\u0133",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
             "\1\u0134",
             "\1\u0135",
-            "",
             "\1\u0136",
-            "\1\u0137",
-            "",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
+            "\1\u0138",
             "\1\u0139",
+            "",
             "\1\u013a",
             "\1\u013b",
             "\1\u013c",
@@ -2146,11 +2175,12 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u013e",
             "\1\u013f",
             "\1\u0140",
+            "",
             "\1\u0141",
             "\1\u0142",
+            "\1\u0143",
             "",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "\1\u0144",
             "\1\u0145",
             "\1\u0146",
             "\1\u0147",
@@ -2159,37 +2189,36 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\1\u014a",
             "\1\u014b",
             "\1\u014c",
-            "",
             "\1\u014d",
-            "\1\u014e",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "\1\u0150",
-            "\1\u0151",
+            "\1\u014f",
+            "",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u0151",
+            "\1\u0152",
             "\1\u0153",
             "\1\u0154",
             "\1\u0155",
             "\1\u0156",
             "\1\u0157",
-            "",
             "\1\u0158",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
+            "\1\u0159",
             "",
             "\1\u015a",
             "\1\u015b",
-            "\1\u015c",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u015d",
             "\1\u015e",
-            "\1\u015f",
-            "",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u0160",
             "\1\u0161",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
-            "",
+            "\1\u0162",
             "\1\u0163",
             "\1\u0164",
+            "",
             "\1\u0165",
-            "\1\u0166",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "",
             "\1\u0167",
             "\1\u0168",
@@ -2197,19 +2226,35 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             "\1\u016b",
             "\1\u016c",
-            "\1\u016d",
             "",
+            "\1\u016d",
             "\1\u016e",
-            "\1\u016f",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
             "\1\u0173",
-            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
+            "\1\u0174",
             "\1\u0175",
+            "\1\u0176",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
             "",
-            "\1\u0177",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "\1\u0182",
+            "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
+            "",
+            "\1\u0184",
             "",
             "\12\46\7\uffff\32\46\4\uffff\1\46\1\uffff\32\46",
             ""
@@ -2245,23 +2290,13 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
             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 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            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 | 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_32 = input.LA(1);
-
-                        s = -1;
-                        if ( ((LA12_32>='\u0000' && LA12_32<='\uFFFF')) ) {s = 71;}
-
-                        else s = 35;
-
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
                         int LA12_0 = input.LA(1);
 
                         s = -1;
@@ -2337,11 +2372,21 @@ public class InternalStaAdaptationLanguageLexer extends Lexer {
 
                         if ( s>=0 ) return s;
                         break;
-                    case 2 : 
+                    case 1 : 
                         int LA12_31 = input.LA(1);
 
                         s = -1;
-                        if ( ((LA12_31>='\u0000' && LA12_31<='\uFFFF')) ) {s = 71;}
+                        if ( ((LA12_31>='\u0000' && LA12_31<='\uFFFF')) ) {s = 72;}
+
+                        else s = 35;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_32 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_32>='\u0000' && LA12_32<='\uFFFF')) ) {s = 72;}
 
                         else s = 35;
 
diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageParser.java b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageParser.java
index f357077d..2aed194e 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageParser.java
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguageParser.java
@@ -21,7 +21,7 @@ import java.util.ArrayList;
 @SuppressWarnings("all")
 public class InternalStaAdaptationLanguageParser 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", "'AdaptationProcess'", "'{'", "'goal'", "'actions'", "':'", "','", "'tactics'", "'strategies'", "'parameters'", "'}'", "'Tactic'", "'input'", "'output'", "'implementedPlan'", "'Action'", "'referredAdaptationPoint'", "'adaptationActionOperation'", "'Strategy'", "'objective'", "'='", "'triggeringEvents'", "'weightingFunction'", "'Description'", "'objectives'", "'StartAction'", "'StopAction'", "'LoopAction'", "'BranchAction'", "'ActionReference'", "'AdaptionActionOperation'", "'-'", "'.'", "'E'", "'e'", "'PropertyRange'", "'SetOfConfigurations'", "'Objective'", "'lastImpact'", "'ref'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'AdaptationProcess'", "'{'", "'goal'", "'actions'", "':'", "','", "'tactics'", "'strategies'", "'parameters'", "'}'", "'Tactic'", "'input'", "'output'", "'implementedPlan'", "'Action'", "'referredAdaptationPoint'", "'adaptationActionOperation'", "'Strategy'", "'objective'", "'='", "'triggeringEvents'", "'weightingFunction'", "'Description'", "'objectives'", "'StartAction'", "'StopAction'", "'LoopAction'", "'BranchAction'", "'ActionReference'", "'AdaptionActionOperation'", "'-'", "'.'", "'E'", "'e'", "'PropertyRange'", "'SetOfConfigurations'", "'Objective'", "'Specification'", "'lastImpact'", "'ref'"
     };
     public static final int RULE_ID=5;
     public static final int T__29=29;
@@ -46,6 +46,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
     public static final int T__14=14;
     public static final int T__13=13;
     public static final int RULE_INT=6;
+    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;
@@ -60,8 +61,8 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
     public static final int RULE_ML_COMMENT=7;
     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 RULE_STRING=4;
+    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;
@@ -2519,18 +2520,18 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
                 if ( (LA16_0==16) ) {
                     int LA16_1 = input.LA(2);
 
-                    if ( (LA16_1==36) ) {
-                        int LA16_2 = input.LA(3);
+                    if ( (LA16_1==35||(LA16_1>=37 && LA16_1<=39)) ) {
+                        alt16=1;
+                    }
+                    else if ( (LA16_1==36) ) {
+                        int LA16_3 = input.LA(3);
 
-                        if ( (LA16_2==16) ) {
+                        if ( (LA16_3==16) ) {
                             alt16=1;
                         }
 
 
                     }
-                    else if ( (LA16_1==35||(LA16_1>=37 && LA16_1<=39)) ) {
-                        alt16=1;
-                    }
 
 
                 }
@@ -3474,25 +3475,28 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "ruleObjective"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1458:1: ruleObjective returns [EObject current=null] : (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specification_3_0= ruleEString ) ) ) ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1458:1: ruleObjective returns [EObject current=null] : (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specifications_3_0= ruleSpecification ) ) (otherlv_4= ',' ( (lv_specifications_5_0= ruleSpecification ) ) )* ) ;
     public final EObject ruleObjective() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
         Token otherlv_2=null;
+        Token otherlv_4=null;
         AntlrDatatypeRuleToken lv_name_1_0 = null;
 
-        AntlrDatatypeRuleToken lv_specification_3_0 = null;
+        EObject lv_specifications_3_0 = null;
+
+        EObject lv_specifications_5_0 = null;
 
 
          enterRule(); 
             
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1461:28: ( (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specification_3_0= ruleEString ) ) ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1462:1: (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specification_3_0= ruleEString ) ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1461:28: ( (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specifications_3_0= ruleSpecification ) ) (otherlv_4= ',' ( (lv_specifications_5_0= ruleSpecification ) ) )* ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1462:1: (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specifications_3_0= ruleSpecification ) ) (otherlv_4= ',' ( (lv_specifications_5_0= ruleSpecification ) ) )* )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1462:1: (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specification_3_0= ruleEString ) ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1462:3: otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specification_3_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1462:1: (otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specifications_3_0= ruleSpecification ) ) (otherlv_4= ',' ( (lv_specifications_5_0= ruleSpecification ) ) )* )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1462:3: otherlv_0= 'Objective' ( (lv_name_1_0= ruleEString ) ) otherlv_2= '=' ( (lv_specifications_3_0= ruleSpecification ) ) (otherlv_4= ',' ( (lv_specifications_5_0= ruleSpecification ) ) )*
             {
             otherlv_0=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleObjective3316); 
 
@@ -3533,17 +3537,17 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
                 	newLeafNode(otherlv_2, grammarAccess.getObjectiveAccess().getEqualsSignKeyword_2());
                 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1488:1: ( (lv_specification_3_0= ruleEString ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1489:1: (lv_specification_3_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1488:1: ( (lv_specifications_3_0= ruleSpecification ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1489:1: (lv_specifications_3_0= ruleSpecification )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1489:1: (lv_specification_3_0= ruleEString )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1490:3: lv_specification_3_0= ruleEString
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1489:1: (lv_specifications_3_0= ruleSpecification )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1490:3: lv_specifications_3_0= ruleSpecification
             {
              
-            	        newCompositeNode(grammarAccess.getObjectiveAccess().getSpecificationEStringParserRuleCall_3_0()); 
+            	        newCompositeNode(grammarAccess.getObjectiveAccess().getSpecificationsSpecificationParserRuleCall_3_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleObjective3370);
-            lv_specification_3_0=ruleEString();
+            pushFollow(FollowSets000.FOLLOW_ruleSpecification_in_ruleObjective3370);
+            lv_specifications_3_0=ruleSpecification();
 
             state._fsp--;
 
@@ -3551,11 +3555,11 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
             	        if (current==null) {
             	            current = createModelElementForParent(grammarAccess.getObjectiveRule());
             	        }
-                   		set(
+                   		add(
                    			current, 
-                   			"specification",
-                    		lv_specification_3_0, 
-                    		"EString");
+                   			"specifications",
+                    		lv_specifications_3_0, 
+                    		"Specification");
             	        afterParserOrEnumRuleCall();
             	    
 
@@ -3564,6 +3568,71 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1506:2: (otherlv_4= ',' ( (lv_specifications_5_0= ruleSpecification ) ) )*
+            loop22:
+            do {
+                int alt22=2;
+                int LA22_0 = input.LA(1);
+
+                if ( (LA22_0==16) ) {
+                    int LA22_1 = input.LA(2);
+
+                    if ( (LA22_1==48) ) {
+                        alt22=1;
+                    }
+
+
+                }
+
+
+                switch (alt22) {
+            	case 1 :
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1506:4: otherlv_4= ',' ( (lv_specifications_5_0= ruleSpecification ) )
+            	    {
+            	    otherlv_4=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleObjective3383); 
+
+            	        	newLeafNode(otherlv_4, grammarAccess.getObjectiveAccess().getCommaKeyword_4_0());
+            	        
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1510:1: ( (lv_specifications_5_0= ruleSpecification ) )
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1511:1: (lv_specifications_5_0= ruleSpecification )
+            	    {
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1511:1: (lv_specifications_5_0= ruleSpecification )
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1512:3: lv_specifications_5_0= ruleSpecification
+            	    {
+            	     
+            	    	        newCompositeNode(grammarAccess.getObjectiveAccess().getSpecificationsSpecificationParserRuleCall_4_1_0()); 
+            	    	    
+            	    pushFollow(FollowSets000.FOLLOW_ruleSpecification_in_ruleObjective3404);
+            	    lv_specifications_5_0=ruleSpecification();
+
+            	    state._fsp--;
+
+
+            	    	        if (current==null) {
+            	    	            current = createModelElementForParent(grammarAccess.getObjectiveRule());
+            	    	        }
+            	           		add(
+            	           			current, 
+            	           			"specifications",
+            	            		lv_specifications_5_0, 
+            	            		"Specification");
+            	    	        afterParserOrEnumRuleCall();
+            	    	    
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop22;
+                }
+            } while (true);
+
 
             }
 
@@ -3584,8 +3653,117 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
     // $ANTLR end "ruleObjective"
 
 
+    // $ANTLR start "entryRuleSpecification"
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1536:1: entryRuleSpecification returns [EObject current=null] : iv_ruleSpecification= ruleSpecification EOF ;
+    public final EObject entryRuleSpecification() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSpecification = null;
+
+
+        try {
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1537:2: (iv_ruleSpecification= ruleSpecification EOF )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1538:2: iv_ruleSpecification= ruleSpecification EOF
+            {
+             newCompositeNode(grammarAccess.getSpecificationRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSpecification_in_entryRuleSpecification3442);
+            iv_ruleSpecification=ruleSpecification();
+
+            state._fsp--;
+
+             current =iv_ruleSpecification; 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSpecification3452); 
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSpecification"
+
+
+    // $ANTLR start "ruleSpecification"
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1545:1: ruleSpecification returns [EObject current=null] : (otherlv_0= 'Specification' ( (lv_value_1_0= ruleEDouble ) ) ) ;
+    public final EObject ruleSpecification() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        AntlrDatatypeRuleToken lv_value_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1548:28: ( (otherlv_0= 'Specification' ( (lv_value_1_0= ruleEDouble ) ) ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1549:1: (otherlv_0= 'Specification' ( (lv_value_1_0= ruleEDouble ) ) )
+            {
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1549:1: (otherlv_0= 'Specification' ( (lv_value_1_0= ruleEDouble ) ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1549:3: otherlv_0= 'Specification' ( (lv_value_1_0= ruleEDouble ) )
+            {
+            otherlv_0=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleSpecification3489); 
+
+                	newLeafNode(otherlv_0, grammarAccess.getSpecificationAccess().getSpecificationKeyword_0());
+                
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1553:1: ( (lv_value_1_0= ruleEDouble ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1554:1: (lv_value_1_0= ruleEDouble )
+            {
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1554:1: (lv_value_1_0= ruleEDouble )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1555:3: lv_value_1_0= ruleEDouble
+            {
+             
+            	        newCompositeNode(grammarAccess.getSpecificationAccess().getValueEDoubleParserRuleCall_1_0()); 
+            	    
+            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_ruleSpecification3510);
+            lv_value_1_0=ruleEDouble();
+
+            state._fsp--;
+
+
+            	        if (current==null) {
+            	            current = createModelElementForParent(grammarAccess.getSpecificationRule());
+            	        }
+                   		set(
+                   			current, 
+                   			"value",
+                    		lv_value_1_0, 
+                    		"EDouble");
+            	        afterParserOrEnumRuleCall();
+            	    
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+             leaveRule(); 
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSpecification"
+
+
     // $ANTLR start "entryRuleEvent"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1514:1: entryRuleEvent returns [EObject current=null] : iv_ruleEvent= ruleEvent EOF ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1579:1: entryRuleEvent returns [EObject current=null] : iv_ruleEvent= ruleEvent EOF ;
     public final EObject entryRuleEvent() throws RecognitionException {
         EObject current = null;
 
@@ -3593,17 +3771,17 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1515:2: (iv_ruleEvent= ruleEvent EOF )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1516:2: iv_ruleEvent= ruleEvent EOF
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1580:2: (iv_ruleEvent= ruleEvent EOF )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1581:2: iv_ruleEvent= ruleEvent EOF
             {
              newCompositeNode(grammarAccess.getEventRule()); 
-            pushFollow(FollowSets000.FOLLOW_ruleEvent_in_entryRuleEvent3406);
+            pushFollow(FollowSets000.FOLLOW_ruleEvent_in_entryRuleEvent3546);
             iv_ruleEvent=ruleEvent();
 
             state._fsp--;
 
              current =iv_ruleEvent; 
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvent3416); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvent3556); 
 
             }
 
@@ -3621,7 +3799,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "ruleEvent"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1523:1: ruleEvent returns [EObject current=null] : ( (lv_name_0_0= ruleEString ) ) ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1588:1: ruleEvent returns [EObject current=null] : ( (lv_name_0_0= ruleEString ) ) ;
     public final EObject ruleEvent() throws RecognitionException {
         EObject current = null;
 
@@ -3631,19 +3809,19 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
          enterRule(); 
             
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1526:28: ( ( (lv_name_0_0= ruleEString ) ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1527:1: ( (lv_name_0_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1591:28: ( ( (lv_name_0_0= ruleEString ) ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1592:1: ( (lv_name_0_0= ruleEString ) )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1527:1: ( (lv_name_0_0= ruleEString ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1528:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1592:1: ( (lv_name_0_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1593:1: (lv_name_0_0= ruleEString )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1528:1: (lv_name_0_0= ruleEString )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1529:3: lv_name_0_0= ruleEString
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1593:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1594:3: lv_name_0_0= ruleEString
             {
              
             	        newCompositeNode(grammarAccess.getEventAccess().getNameEStringParserRuleCall_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleEvent3461);
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleEvent3601);
             lv_name_0_0=ruleEString();
 
             state._fsp--;
@@ -3683,7 +3861,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "entryRuleWeightedTactic"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1553:1: entryRuleWeightedTactic returns [EObject current=null] : iv_ruleWeightedTactic= ruleWeightedTactic EOF ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1618:1: entryRuleWeightedTactic returns [EObject current=null] : iv_ruleWeightedTactic= ruleWeightedTactic EOF ;
     public final EObject entryRuleWeightedTactic() throws RecognitionException {
         EObject current = null;
 
@@ -3691,17 +3869,17 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1554:2: (iv_ruleWeightedTactic= ruleWeightedTactic EOF )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1555:2: iv_ruleWeightedTactic= ruleWeightedTactic EOF
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1619:2: (iv_ruleWeightedTactic= ruleWeightedTactic EOF )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1620:2: iv_ruleWeightedTactic= ruleWeightedTactic EOF
             {
              newCompositeNode(grammarAccess.getWeightedTacticRule()); 
-            pushFollow(FollowSets000.FOLLOW_ruleWeightedTactic_in_entryRuleWeightedTactic3496);
+            pushFollow(FollowSets000.FOLLOW_ruleWeightedTactic_in_entryRuleWeightedTactic3636);
             iv_ruleWeightedTactic=ruleWeightedTactic();
 
             state._fsp--;
 
              current =iv_ruleWeightedTactic; 
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWeightedTactic3506); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWeightedTactic3646); 
 
             }
 
@@ -3719,7 +3897,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "ruleWeightedTactic"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1562:1: ruleWeightedTactic returns [EObject current=null] : ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? ) ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1627:1: ruleWeightedTactic returns [EObject current=null] : ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? ) ;
     public final EObject ruleWeightedTactic() throws RecognitionException {
         EObject current = null;
 
@@ -3735,22 +3913,22 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
          enterRule(); 
             
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1565:28: ( ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1566:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1630:28: ( ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1631:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1566:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1566:2: ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )?
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1631:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )? )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1631:2: ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( ( ruleEString ) ) ( (lv_currentWeight_3_0= ruleEDouble ) ) ( (lv_defaultWeight_4_0= ruleEDouble ) ) (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )?
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1566:2: ( (lv_name_0_0= ruleEString ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1567:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1631:2: ( (lv_name_0_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1632:1: (lv_name_0_0= ruleEString )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1567:1: (lv_name_0_0= ruleEString )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1568:3: lv_name_0_0= ruleEString
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1632:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1633:3: lv_name_0_0= ruleEString
             {
              
             	        newCompositeNode(grammarAccess.getWeightedTacticAccess().getNameEStringParserRuleCall_0_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedTactic3552);
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedTactic3692);
             lv_name_0_0=ruleEString();
 
             state._fsp--;
@@ -3772,15 +3950,15 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            otherlv_1=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleWeightedTactic3564); 
+            otherlv_1=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleWeightedTactic3704); 
 
                 	newLeafNode(otherlv_1, grammarAccess.getWeightedTacticAccess().getEqualsSignKeyword_1());
                 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1588:1: ( ( ruleEString ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1589:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1653:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1654:1: ( ruleEString )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1589:1: ( ruleEString )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1590:3: ruleEString
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1654:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1655:3: ruleEString
             {
 
             			if (current==null) {
@@ -3790,7 +3968,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
              
             	        newCompositeNode(grammarAccess.getWeightedTacticAccess().getUsedTacticTacticCrossReference_2_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedTactic3587);
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedTactic3727);
             ruleEString();
 
             state._fsp--;
@@ -3804,16 +3982,16 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1603:2: ( (lv_currentWeight_3_0= ruleEDouble ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1604:1: (lv_currentWeight_3_0= ruleEDouble )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1668:2: ( (lv_currentWeight_3_0= ruleEDouble ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1669:1: (lv_currentWeight_3_0= ruleEDouble )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1604:1: (lv_currentWeight_3_0= ruleEDouble )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1605:3: lv_currentWeight_3_0= ruleEDouble
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1669:1: (lv_currentWeight_3_0= ruleEDouble )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1670:3: lv_currentWeight_3_0= ruleEDouble
             {
              
             	        newCompositeNode(grammarAccess.getWeightedTacticAccess().getCurrentWeightEDoubleParserRuleCall_3_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_ruleWeightedTactic3608);
+            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_ruleWeightedTactic3748);
             lv_currentWeight_3_0=ruleEDouble();
 
             state._fsp--;
@@ -3835,16 +4013,16 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1621:2: ( (lv_defaultWeight_4_0= ruleEDouble ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1622:1: (lv_defaultWeight_4_0= ruleEDouble )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1686:2: ( (lv_defaultWeight_4_0= ruleEDouble ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1687:1: (lv_defaultWeight_4_0= ruleEDouble )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1622:1: (lv_defaultWeight_4_0= ruleEDouble )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1623:3: lv_defaultWeight_4_0= ruleEDouble
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1687:1: (lv_defaultWeight_4_0= ruleEDouble )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1688:3: lv_defaultWeight_4_0= ruleEDouble
             {
              
             	        newCompositeNode(grammarAccess.getWeightedTacticAccess().getDefaultWeightEDoubleParserRuleCall_4_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_ruleWeightedTactic3629);
+            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_ruleWeightedTactic3769);
             lv_defaultWeight_4_0=ruleEDouble();
 
             state._fsp--;
@@ -3866,26 +4044,26 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1639:2: (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )?
-            int alt22=2;
-            int LA22_0 = input.LA(1);
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1704:2: (otherlv_5= 'lastImpact' ( ( ruleEString ) ) )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA22_0==48) ) {
-                alt22=1;
+            if ( (LA23_0==49) ) {
+                alt23=1;
             }
-            switch (alt22) {
+            switch (alt23) {
                 case 1 :
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1639:4: otherlv_5= 'lastImpact' ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1704:4: otherlv_5= 'lastImpact' ( ( ruleEString ) )
                     {
-                    otherlv_5=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleWeightedTactic3642); 
+                    otherlv_5=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleWeightedTactic3782); 
 
                         	newLeafNode(otherlv_5, grammarAccess.getWeightedTacticAccess().getLastImpactKeyword_5_0());
                         
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1643:1: ( ( ruleEString ) )
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1644:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1708:1: ( ( ruleEString ) )
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1709:1: ( ruleEString )
                     {
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1644:1: ( ruleEString )
-                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1645:3: ruleEString
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1709:1: ( ruleEString )
+                    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1710:3: ruleEString
                     {
 
                     			if (current==null) {
@@ -3895,7 +4073,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
                      
                     	        newCompositeNode(grammarAccess.getWeightedTacticAccess().getLastImpactImpactCrossReference_5_1_0()); 
                     	    
-                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedTactic3665);
+                    pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedTactic3805);
                     ruleEString();
 
                     state._fsp--;
@@ -3936,7 +4114,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "entryRuleWeightingFunction"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1666:1: entryRuleWeightingFunction returns [EObject current=null] : iv_ruleWeightingFunction= ruleWeightingFunction EOF ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1731:1: entryRuleWeightingFunction returns [EObject current=null] : iv_ruleWeightingFunction= ruleWeightingFunction EOF ;
     public final EObject entryRuleWeightingFunction() throws RecognitionException {
         EObject current = null;
 
@@ -3944,17 +4122,17 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1667:2: (iv_ruleWeightingFunction= ruleWeightingFunction EOF )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1668:2: iv_ruleWeightingFunction= ruleWeightingFunction EOF
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1732:2: (iv_ruleWeightingFunction= ruleWeightingFunction EOF )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1733:2: iv_ruleWeightingFunction= ruleWeightingFunction EOF
             {
              newCompositeNode(grammarAccess.getWeightingFunctionRule()); 
-            pushFollow(FollowSets000.FOLLOW_ruleWeightingFunction_in_entryRuleWeightingFunction3703);
+            pushFollow(FollowSets000.FOLLOW_ruleWeightingFunction_in_entryRuleWeightingFunction3843);
             iv_ruleWeightingFunction=ruleWeightingFunction();
 
             state._fsp--;
 
              current =iv_ruleWeightingFunction; 
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWeightingFunction3713); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWeightingFunction3853); 
 
             }
 
@@ -3972,7 +4150,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "ruleWeightingFunction"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1675:1: ruleWeightingFunction returns [EObject current=null] : ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' ) ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1740:1: ruleWeightingFunction returns [EObject current=null] : ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' ) ;
     public final EObject ruleWeightingFunction() throws RecognitionException {
         EObject current = null;
 
@@ -3989,22 +4167,22 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
          enterRule(); 
             
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1678:28: ( ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1679:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1743:28: ( ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1744:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1679:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1679:2: ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}'
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1744:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}' )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1744:2: ( (lv_name_0_0= ruleEString ) ) otherlv_1= '{' ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) ) (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )* otherlv_5= '}'
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1679:2: ( (lv_name_0_0= ruleEString ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1680:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1744:2: ( (lv_name_0_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1745:1: (lv_name_0_0= ruleEString )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1680:1: (lv_name_0_0= ruleEString )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1681:3: lv_name_0_0= ruleEString
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1745:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1746:3: lv_name_0_0= ruleEString
             {
              
             	        newCompositeNode(grammarAccess.getWeightingFunctionAccess().getNameEStringParserRuleCall_0_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightingFunction3759);
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightingFunction3899);
             lv_name_0_0=ruleEString();
 
             state._fsp--;
@@ -4026,20 +4204,20 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleWeightingFunction3771); 
+            otherlv_1=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleWeightingFunction3911); 
 
                 	newLeafNode(otherlv_1, grammarAccess.getWeightingFunctionAccess().getLeftCurlyBracketKeyword_1());
                 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1701:1: ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1702:1: (lv_weightedMetrics_2_0= ruleWeightedMetric )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1766:1: ( (lv_weightedMetrics_2_0= ruleWeightedMetric ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1767:1: (lv_weightedMetrics_2_0= ruleWeightedMetric )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1702:1: (lv_weightedMetrics_2_0= ruleWeightedMetric )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1703:3: lv_weightedMetrics_2_0= ruleWeightedMetric
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1767:1: (lv_weightedMetrics_2_0= ruleWeightedMetric )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1768:3: lv_weightedMetrics_2_0= ruleWeightedMetric
             {
              
             	        newCompositeNode(grammarAccess.getWeightingFunctionAccess().getWeightedMetricsWeightedMetricParserRuleCall_2_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3792);
+            pushFollow(FollowSets000.FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3932);
             lv_weightedMetrics_2_0=ruleWeightedMetric();
 
             state._fsp--;
@@ -4061,35 +4239,35 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1719:2: (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )*
-            loop23:
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1784:2: (otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) ) )*
+            loop24:
             do {
-                int alt23=2;
-                int LA23_0 = input.LA(1);
+                int alt24=2;
+                int LA24_0 = input.LA(1);
 
-                if ( (LA23_0==16) ) {
-                    alt23=1;
+                if ( (LA24_0==16) ) {
+                    alt24=1;
                 }
 
 
-                switch (alt23) {
+                switch (alt24) {
             	case 1 :
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1719:4: otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) )
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1784:4: otherlv_3= ',' ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) )
             	    {
-            	    otherlv_3=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleWeightingFunction3805); 
+            	    otherlv_3=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleWeightingFunction3945); 
 
             	        	newLeafNode(otherlv_3, grammarAccess.getWeightingFunctionAccess().getCommaKeyword_3_0());
             	        
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1723:1: ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) )
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1724:1: (lv_weightedMetrics_4_0= ruleWeightedMetric )
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1788:1: ( (lv_weightedMetrics_4_0= ruleWeightedMetric ) )
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1789:1: (lv_weightedMetrics_4_0= ruleWeightedMetric )
             	    {
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1724:1: (lv_weightedMetrics_4_0= ruleWeightedMetric )
-            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1725:3: lv_weightedMetrics_4_0= ruleWeightedMetric
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1789:1: (lv_weightedMetrics_4_0= ruleWeightedMetric )
+            	    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1790:3: lv_weightedMetrics_4_0= ruleWeightedMetric
             	    {
             	     
             	    	        newCompositeNode(grammarAccess.getWeightingFunctionAccess().getWeightedMetricsWeightedMetricParserRuleCall_3_1_0()); 
             	    	    
-            	    pushFollow(FollowSets000.FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3826);
+            	    pushFollow(FollowSets000.FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3966);
             	    lv_weightedMetrics_4_0=ruleWeightedMetric();
 
             	    state._fsp--;
@@ -4116,11 +4294,11 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
             	    break;
 
             	default :
-            	    break loop23;
+            	    break loop24;
                 }
             } while (true);
 
-            otherlv_5=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleWeightingFunction3840); 
+            otherlv_5=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleWeightingFunction3980); 
 
                 	newLeafNode(otherlv_5, grammarAccess.getWeightingFunctionAccess().getRightCurlyBracketKeyword_4());
                 
@@ -4145,7 +4323,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "entryRuleWeightedMetric"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1765:1: entryRuleWeightedMetric returns [EObject current=null] : iv_ruleWeightedMetric= ruleWeightedMetric EOF ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1830:1: entryRuleWeightedMetric returns [EObject current=null] : iv_ruleWeightedMetric= ruleWeightedMetric EOF ;
     public final EObject entryRuleWeightedMetric() throws RecognitionException {
         EObject current = null;
 
@@ -4153,17 +4331,17 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1766:2: (iv_ruleWeightedMetric= ruleWeightedMetric EOF )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1767:2: iv_ruleWeightedMetric= ruleWeightedMetric EOF
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1831:2: (iv_ruleWeightedMetric= ruleWeightedMetric EOF )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1832:2: iv_ruleWeightedMetric= ruleWeightedMetric EOF
             {
              newCompositeNode(grammarAccess.getWeightedMetricRule()); 
-            pushFollow(FollowSets000.FOLLOW_ruleWeightedMetric_in_entryRuleWeightedMetric3888);
+            pushFollow(FollowSets000.FOLLOW_ruleWeightedMetric_in_entryRuleWeightedMetric4028);
             iv_ruleWeightedMetric=ruleWeightedMetric();
 
             state._fsp--;
 
              current =iv_ruleWeightedMetric; 
-            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWeightedMetric3898); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWeightedMetric4038); 
 
             }
 
@@ -4181,7 +4359,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
 
     // $ANTLR start "ruleWeightedMetric"
-    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1774:1: ruleWeightedMetric returns [EObject current=null] : ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) ) ;
+    // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1839:1: ruleWeightedMetric returns [EObject current=null] : ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) ) ;
     public final EObject ruleWeightedMetric() throws RecognitionException {
         EObject current = null;
 
@@ -4196,22 +4374,22 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
          enterRule(); 
             
         try {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1777:28: ( ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1778:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1842:28: ( ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1843:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1778:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1778:2: ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1843:1: ( ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1843:2: ( (lv_name_0_0= ruleEString ) ) otherlv_1= '=' ( (lv_weight_2_0= ruleEDouble ) ) otherlv_3= 'ref' otherlv_4= ':' ( ( ruleEString ) )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1778:2: ( (lv_name_0_0= ruleEString ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1779:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1843:2: ( (lv_name_0_0= ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1844:1: (lv_name_0_0= ruleEString )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1779:1: (lv_name_0_0= ruleEString )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1780:3: lv_name_0_0= ruleEString
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1844:1: (lv_name_0_0= ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1845:3: lv_name_0_0= ruleEString
             {
              
             	        newCompositeNode(grammarAccess.getWeightedMetricAccess().getNameEStringParserRuleCall_0_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedMetric3944);
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedMetric4084);
             lv_name_0_0=ruleEString();
 
             state._fsp--;
@@ -4233,20 +4411,20 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            otherlv_1=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleWeightedMetric3956); 
+            otherlv_1=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleWeightedMetric4096); 
 
                 	newLeafNode(otherlv_1, grammarAccess.getWeightedMetricAccess().getEqualsSignKeyword_1());
                 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1800:1: ( (lv_weight_2_0= ruleEDouble ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1801:1: (lv_weight_2_0= ruleEDouble )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1865:1: ( (lv_weight_2_0= ruleEDouble ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1866:1: (lv_weight_2_0= ruleEDouble )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1801:1: (lv_weight_2_0= ruleEDouble )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1802:3: lv_weight_2_0= ruleEDouble
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1866:1: (lv_weight_2_0= ruleEDouble )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1867:3: lv_weight_2_0= ruleEDouble
             {
              
             	        newCompositeNode(grammarAccess.getWeightedMetricAccess().getWeightEDoubleParserRuleCall_2_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_ruleWeightedMetric3977);
+            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_ruleWeightedMetric4117);
             lv_weight_2_0=ruleEDouble();
 
             state._fsp--;
@@ -4268,19 +4446,19 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
 
             }
 
-            otherlv_3=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleWeightedMetric3989); 
+            otherlv_3=(Token)match(input,50,FollowSets000.FOLLOW_50_in_ruleWeightedMetric4129); 
 
                 	newLeafNode(otherlv_3, grammarAccess.getWeightedMetricAccess().getRefKeyword_3());
                 
-            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleWeightedMetric4001); 
+            otherlv_4=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleWeightedMetric4141); 
 
                 	newLeafNode(otherlv_4, grammarAccess.getWeightedMetricAccess().getColonKeyword_4());
                 
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1826:1: ( ( ruleEString ) )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1827:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1891:1: ( ( ruleEString ) )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1892:1: ( ruleEString )
             {
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1827:1: ( ruleEString )
-            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1828:3: ruleEString
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1892:1: ( ruleEString )
+            // ../edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/parser/antlr/internal/InternalStaAdaptationLanguage.g:1893:3: ruleEString
             {
 
             			if (current==null) {
@@ -4290,7 +4468,7 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
              
             	        newCompositeNode(grammarAccess.getWeightedMetricAccess().getMetricTypeMetricTypeCrossReference_5_0()); 
             	    
-            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedMetric4024);
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_ruleWeightedMetric4164);
             ruleEString();
 
             state._fsp--;
@@ -4485,36 +4663,42 @@ public class InternalStaAdaptationLanguageParser extends AbstractInternalAntlrPa
         public static final BitSet FOLLOW_EOF_in_entryRuleObjective3279 = new BitSet(new long[]{0x0000000000000002L});
         public static final BitSet FOLLOW_47_in_ruleObjective3316 = new BitSet(new long[]{0x0000000000000030L});
         public static final BitSet FOLLOW_ruleEString_in_ruleObjective3337 = new BitSet(new long[]{0x0000000040000000L});
-        public static final BitSet FOLLOW_30_in_ruleObjective3349 = new BitSet(new long[]{0x0000000000000030L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleObjective3370 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEvent_in_entryRuleEvent3406 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleEvent3416 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleEvent3461 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleWeightedTactic_in_entryRuleWeightedTactic3496 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleWeightedTactic3506 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedTactic3552 = new BitSet(new long[]{0x0000000040000000L});
-        public static final BitSet FOLLOW_30_in_ruleWeightedTactic3564 = new BitSet(new long[]{0x0000000000000030L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedTactic3587 = new BitSet(new long[]{0x0000060000000040L});
-        public static final BitSet FOLLOW_ruleEDouble_in_ruleWeightedTactic3608 = new BitSet(new long[]{0x0000060000000040L});
-        public static final BitSet FOLLOW_ruleEDouble_in_ruleWeightedTactic3629 = new BitSet(new long[]{0x0001000000000002L});
-        public static final BitSet FOLLOW_48_in_ruleWeightedTactic3642 = new BitSet(new long[]{0x0000000000000030L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedTactic3665 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleWeightingFunction_in_entryRuleWeightingFunction3703 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleWeightingFunction3713 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleWeightingFunction3759 = new BitSet(new long[]{0x0000000000001000L});
-        public static final BitSet FOLLOW_12_in_ruleWeightingFunction3771 = new BitSet(new long[]{0x0000000000000030L});
-        public static final BitSet FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3792 = new BitSet(new long[]{0x0000000000110000L});
-        public static final BitSet FOLLOW_16_in_ruleWeightingFunction3805 = new BitSet(new long[]{0x0000000000000030L});
-        public static final BitSet FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3826 = new BitSet(new long[]{0x0000000000110000L});
-        public static final BitSet FOLLOW_20_in_ruleWeightingFunction3840 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleWeightedMetric_in_entryRuleWeightedMetric3888 = new BitSet(new long[]{0x0000000000000000L});
-        public static final BitSet FOLLOW_EOF_in_entryRuleWeightedMetric3898 = new BitSet(new long[]{0x0000000000000002L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedMetric3944 = new BitSet(new long[]{0x0000000040000000L});
-        public static final BitSet FOLLOW_30_in_ruleWeightedMetric3956 = new BitSet(new long[]{0x0000060000000040L});
-        public static final BitSet FOLLOW_ruleEDouble_in_ruleWeightedMetric3977 = new BitSet(new long[]{0x0002000000000000L});
-        public static final BitSet FOLLOW_49_in_ruleWeightedMetric3989 = new BitSet(new long[]{0x0000000000008000L});
-        public static final BitSet FOLLOW_15_in_ruleWeightedMetric4001 = new BitSet(new long[]{0x0000000000000030L});
-        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedMetric4024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_ruleObjective3349 = new BitSet(new long[]{0x0001000000000000L});
+        public static final BitSet FOLLOW_ruleSpecification_in_ruleObjective3370 = new BitSet(new long[]{0x0000000000010002L});
+        public static final BitSet FOLLOW_16_in_ruleObjective3383 = new BitSet(new long[]{0x0001000000000000L});
+        public static final BitSet FOLLOW_ruleSpecification_in_ruleObjective3404 = new BitSet(new long[]{0x0000000000010002L});
+        public static final BitSet FOLLOW_ruleSpecification_in_entryRuleSpecification3442 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSpecification3452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_ruleSpecification3489 = new BitSet(new long[]{0x0000060000000040L});
+        public static final BitSet FOLLOW_ruleEDouble_in_ruleSpecification3510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEvent_in_entryRuleEvent3546 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEvent3556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleEvent3601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWeightedTactic_in_entryRuleWeightedTactic3636 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleWeightedTactic3646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedTactic3692 = new BitSet(new long[]{0x0000000040000000L});
+        public static final BitSet FOLLOW_30_in_ruleWeightedTactic3704 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedTactic3727 = new BitSet(new long[]{0x0000060000000040L});
+        public static final BitSet FOLLOW_ruleEDouble_in_ruleWeightedTactic3748 = new BitSet(new long[]{0x0000060000000040L});
+        public static final BitSet FOLLOW_ruleEDouble_in_ruleWeightedTactic3769 = new BitSet(new long[]{0x0002000000000002L});
+        public static final BitSet FOLLOW_49_in_ruleWeightedTactic3782 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedTactic3805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWeightingFunction_in_entryRuleWeightingFunction3843 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleWeightingFunction3853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleWeightingFunction3899 = new BitSet(new long[]{0x0000000000001000L});
+        public static final BitSet FOLLOW_12_in_ruleWeightingFunction3911 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3932 = new BitSet(new long[]{0x0000000000110000L});
+        public static final BitSet FOLLOW_16_in_ruleWeightingFunction3945 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleWeightedMetric_in_ruleWeightingFunction3966 = new BitSet(new long[]{0x0000000000110000L});
+        public static final BitSet FOLLOW_20_in_ruleWeightingFunction3980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWeightedMetric_in_entryRuleWeightedMetric4028 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleWeightedMetric4038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedMetric4084 = new BitSet(new long[]{0x0000000040000000L});
+        public static final BitSet FOLLOW_30_in_ruleWeightedMetric4096 = new BitSet(new long[]{0x0000060000000040L});
+        public static final BitSet FOLLOW_ruleEDouble_in_ruleWeightedMetric4117 = new BitSet(new long[]{0x0004000000000000L});
+        public static final BitSet FOLLOW_50_in_ruleWeightedMetric4129 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_15_in_ruleWeightedMetric4141 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_ruleEString_in_ruleWeightedMetric4164 = new BitSet(new long[]{0x0000000000000002L});
     }
 
 
diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/services/StaAdaptationLanguageGrammarAccess.java b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/services/StaAdaptationLanguageGrammarAccess.java
index 00ef38b7..e310f327 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/services/StaAdaptationLanguageGrammarAccess.java
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src-gen/edu/kit/ipd/descartes/mm/adaptation/services/StaAdaptationLanguageGrammarAccess.java
@@ -1150,8 +1150,12 @@ public class StaAdaptationLanguageGrammarAccess extends AbstractGrammarElementFi
 		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 cEqualsSignKeyword_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 Assignment cSpecificationsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cSpecificationsSpecificationParserRuleCall_3_0 = (RuleCall)cSpecificationsAssignment_3.eContents().get(0);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cCommaKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cSpecificationsAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final RuleCall cSpecificationsSpecificationParserRuleCall_4_1_0 = (RuleCall)cSpecificationsAssignment_4_1.eContents().get(0);
 		
 		/// *
 		//	//id=EString
@@ -1160,10 +1164,10 @@ public class StaAdaptationLanguageGrammarAccess extends AbstractGrammarElementFi
 		//		'specification' specification=EString
 		//	'}'
 		// * / Objective:
-		//	"Objective" name=EString "=" specification=EString;
+		//	"Objective" name=EString "=" specifications+=Specification ("," specifications+=Specification)*;
 		public ParserRule getRule() { return rule; }
 
-		//"Objective" name=EString "=" specification=EString
+		//"Objective" name=EString "=" specifications+=Specification ("," specifications+=Specification)*
 		public Group getGroup() { return cGroup; }
 
 		//"Objective"
@@ -1178,11 +1182,47 @@ public class StaAdaptationLanguageGrammarAccess extends AbstractGrammarElementFi
 		//"="
 		public Keyword getEqualsSignKeyword_2() { return cEqualsSignKeyword_2; }
 
-		//specification=EString
-		public Assignment getSpecificationAssignment_3() { return cSpecificationAssignment_3; }
+		//specifications+=Specification
+		public Assignment getSpecificationsAssignment_3() { return cSpecificationsAssignment_3; }
 
-		//EString
-		public RuleCall getSpecificationEStringParserRuleCall_3_0() { return cSpecificationEStringParserRuleCall_3_0; }
+		//Specification
+		public RuleCall getSpecificationsSpecificationParserRuleCall_3_0() { return cSpecificationsSpecificationParserRuleCall_3_0; }
+
+		//("," specifications+=Specification)*
+		public Group getGroup_4() { return cGroup_4; }
+
+		//","
+		public Keyword getCommaKeyword_4_0() { return cCommaKeyword_4_0; }
+
+		//specifications+=Specification
+		public Assignment getSpecificationsAssignment_4_1() { return cSpecificationsAssignment_4_1; }
+
+		//Specification
+		public RuleCall getSpecificationsSpecificationParserRuleCall_4_1_0() { return cSpecificationsSpecificationParserRuleCall_4_1_0; }
+	}
+
+	public class SpecificationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Specification");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSpecificationKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cValueEDoubleParserRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
+		
+		//Specification:
+		//	"Specification" value=EDouble;
+		public ParserRule getRule() { return rule; }
+
+		//"Specification" value=EDouble
+		public Group getGroup() { return cGroup; }
+
+		//"Specification"
+		public Keyword getSpecificationKeyword_0() { return cSpecificationKeyword_0; }
+
+		//value=EDouble
+		public Assignment getValueAssignment_1() { return cValueAssignment_1; }
+
+		//EDouble
+		public RuleCall getValueEDoubleParserRuleCall_1_0() { return cValueEDoubleParserRuleCall_1_0; }
 	}
 
 	public class EventElements extends AbstractParserRuleElementFinder {
@@ -1533,6 +1573,7 @@ public class StaAdaptationLanguageGrammarAccess extends AbstractGrammarElementFi
 	private AdaptationScopeElements pAdaptationScope;
 	private AdaptationDirectionElements pAdaptationDirection;
 	private ObjectiveElements pObjective;
+	private SpecificationElements pSpecification;
 	private EventElements pEvent;
 	private WeightedTacticElements pWeightedTactic;
 	private WeightingFunctionElements pWeightingFunction;
@@ -1962,7 +2003,7 @@ public class StaAdaptationLanguageGrammarAccess extends AbstractGrammarElementFi
 	//		'specification' specification=EString
 	//	'}'
 	// * / Objective:
-	//	"Objective" name=EString "=" specification=EString;
+	//	"Objective" name=EString "=" specifications+=Specification ("," specifications+=Specification)*;
 	public ObjectiveElements getObjectiveAccess() {
 		return (pObjective != null) ? pObjective : (pObjective = new ObjectiveElements());
 	}
@@ -1971,6 +2012,16 @@ public class StaAdaptationLanguageGrammarAccess extends AbstractGrammarElementFi
 		return getObjectiveAccess().getRule();
 	}
 
+	//Specification:
+	//	"Specification" value=EDouble;
+	public SpecificationElements getSpecificationAccess() {
+		return (pSpecification != null) ? pSpecification : (pSpecification = new SpecificationElements());
+	}
+	
+	public ParserRule getSpecificationRule() {
+		return getSpecificationAccess().getRule();
+	}
+
 	//Event:
 	//	name= //id=EString
 	//	EString;
diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/src/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xtext b/edu.kit.ipd.descartes.mm.adaptation.sta/src/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xtext
index 4a6b639b..abfd45c0 100644
--- a/edu.kit.ipd.descartes.mm.adaptation.sta/src/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xtext
+++ b/edu.kit.ipd.descartes.mm.adaptation.sta/src/edu/kit/ipd/descartes/mm/adaptation/StaAdaptationLanguage.xtext
@@ -272,7 +272,7 @@ AdaptationDirection returns AdaptationDirection:
 	'AdaptationDirection' /* TODO: implement this rule and an appropriate IValueConverter */;
 
 Objective returns Objective:
-	'Objective' name=EString '=' specification=EString
+	'Objective' name=EString '=' specifications+=Specification (',' specifications+=Specification)*
 /*
 	//id=EString
 	'{'
@@ -282,6 +282,10 @@ Objective returns Objective:
 */
 ;
 
+Specification:
+	'Specification' value=EDouble
+;
+
 Event returns Event:
 	name=EString //id=EString
 ;
-- 
GitLab